Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #106905 > unrolled thread

sys.exit(1) vs raise SystemExit vs raise

Started byGanesh Pal <ganesh1pal@gmail.com>
First post2016-04-12 18:20 +0530
Last post2016-04-12 18:20 +0530
Articles 1 — 1 participant

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  sys.exit(1) vs raise SystemExit vs raise Ganesh Pal <ganesh1pal@gmail.com> - 2016-04-12 18:20 +0530

#106905 — sys.exit(1) vs raise SystemExit vs raise

FromGanesh Pal <ganesh1pal@gmail.com>
Date2016-04-12 18:20 +0530
Subjectsys.exit(1) vs raise SystemExit vs raise
Message-ID<mailman.44.1460465456.15650.python-list@python.org>
I m on python 2.7 and Linux ,  I have a simple code  need suggestion if  I
 I could replace sys.exit(1) with raise  SystemExit .


==Actual code==

def main():
    try:
        create_logdir()
        create_dataset()
        unittest.main()
    except Exception as e:
        logging.exception(e)
        sys.exit(EXIT_STATUS_ERROR)

if __name__ == '__main__':
    main()

==Changed Code==


def main():
    try:
        create_logdir()
        create_dataset()
        unittest.main()
    except Exception as e:
        logging.exception(e)
        raise SystemExit

if __name__ == '__main__':
    main()


2. All the functions in try block have exception bubbled out using raise

   Example for create_logdir() here is the function definition

def create_logdir():

    try:
        os.makedirs(LOG_DIR)
    except OSError as e:
        sys.stderr.write("Failed to create log directory...Exiting !!!")
        raise
    print "log file: " + corrupt_log
    return True

def main():
    try:
        create_logdir()
    except Exception as e:
        logging.exception(e)
        raise SystemExit

(a) In case if create_logdir() fails we will get the below error ,is
this fine or do I need to improve this code.

Failed to create log directory...Exiting !!!ERROR:root:[Errno 17] File
exists: '/var/log/dummy'

Traceback (most recent call last):
  File "corrupt_test.py", line 245, in main
    create_logdir()
  File "corrupt_test.py", line 53, in create_logdir
    os.makedirs(LOG_DIR)
  File "/usr/local/lib/python2.7/os.py", line 157, in makedirs
OSError: [Errno 17] File exists: '/var/log/dummy'


3. Can I have just raise , instead of SystemExit or sys.exit(1) . This
looks wrong to me

  def main():

    try:
        create_logdir()
    except Exception as e
        logging.exception(e)
        raise

 Regards,

Ganesh

[toc] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web