[Tutor] Two sys.exit questions
David Perlman
dperlman at wisc.edu
Wed Feb 28 21:36:12 CET 2007
If you want to play around with this stuff, you can first import sys,
and then insert this line in the except clause:
print repr(sys.exc_info())
(or some other way of getting the details out of the returned tuple.)
That will tell you exactly what brought you to the except clause.
On Feb 28, 2007, at 12:07 PM, Jason Massey wrote:
> 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 <flickita at gmail.com> 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 at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
--
-dave----------------------------------------------------------------
Science arose from poetry... when times change the two can meet again
on a higher level as friends. -Göthe
More information about the Tutor
mailing list