sys.exit()

George Young gry at ll.mit.edu
Thu Oct 9 15:25:04 EDT 2003


On Thu, 09 Oct 2003 20:44:55 +0200, Gerrit Holl wrote:

> Ivan Voras wrote:
>> Gerrit Holl wrote:
>> > An alternative that I often choose is:
>> >
>> > raise SystemExit("I need arguments!")
>> >
>> > This is the same in one line, and I think it is more elegant, because
>> > it
>> > is higher-level: you are not using the low-level interface of error
>> 
>> Yes, I agree. This is what I was looking for (as always, it was obvious
>> :) ), thanks. Only, what error code is returned for this termination method?
> 
> For a string, I believe it is 1, although I don't know when this holds and
> when it doesn't - I don't care for myself, so I never tried to find out, really ;)

Actually, SystemExit is a *lower* level operation.  From the docs:
[ http://www.python.org/doc/current/lib/module-sys.html ]
================================================================
exit(  	[arg])

    Exit from Python. This is implemented by raising the SystemExit
exception, so cleanup actions specified by finally clauses of try
statements are honored, and it is possible to intercept the exit
attempt at an outer level. The optional argument arg can be an integer
giving the exit status (defaulting to zero), or another type of
object. If it is an integer, zero is considered ``successful
termination'' and any nonzero value is considered ``abnormal
termination'' by shells and the like. Most systems require it to be in
the range 0-127, and produce undefined results otherwise. Some systems
have a convention for assigning specific meanings to specific exit
codes, but these are generally underdeveloped; Unix programs generally
use 2 for command line syntax errors and 1 for all other kind of
errors. If another type of object is passed, None is equivalent to
passing zero, and any other object is printed to sys.stderr and
results in an exit code of 1. In particular, sys.exit("some error
message") is a quick way to exit a program when an error occurs.
================================================================

So SystemExit is called by sys.exit.  And one can use:

   sys.exit('I need arguments!')

Thus it would seem that sys.exit is higher level, and probably a bit more
stable and portable.


-- George





More information about the Python-list mailing list