When you call sys.exit() you're raising a SystemExit exception.

help(sys.exit)
Help on built-in function exit in module sys:

exit(...)
   exit([status])

   Exit the interpreter by raising SystemExit(status).
   If the status is omitted or None, it defaults to zero (i.e., success).
   If the status is numeric, it will be used as the system exit status.
   If it is another kind of object, it will be printed and the system
   exit status will be one (i.e., failure).

So that explains why you're falling through to except clause.
You can see the same type of behavior if you manually raise an exception
(ValueError for example) within a try clause

In your example concerning the reading and writing to files, as far as a
close() statement goes you would get this error:
try:
...     i_file = open('doesnt_exit.tmp','r')
... except IOError:
...     i_file.close()
...
Traceback (most recent call last):
 File "<interactive input>", line 4, in ?
NameError: name 'i_file' is not defined


Since i_file never got defined because the open wasn't successful.

BTW don't use file as a variable since it will mask python's built-in file
object

On 2/28/07, Cecilia Alm <[EMAIL PROTECTED]> wrote:

I have two quick questions:

1) Why does sys.exit() not work in a try clause (but it does in the except
clause)?

>>> try:
...    print 1
...    sys.exit(0)
... except:
...    print 2
...    sys.exit(0)
...
1
2
# python exited

2) If opening a file fails in the below 2 cases, sys.exit(message) prints
a message in the except clause before program termination.
    Some use file.close() in the except clause (or in a finally clause).
It seems superflous in the below case of read and write. (?)

        try:
            file = open('myinfile.txt', 'r')
        except IOError:
            sys.exit('Couldn't open myinfile.txt')

        try:
            file = open('myoutfile.txt', 'w')
        except IOError:
            sys.exit('Couldn't open myoutfile.txt')







_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to