Toothpick Anemone
Toothpick Anemone

Reputation: 4644

Why is exit code not honored?

Suppose we write the following inside of test_script.py:

sys.exit(-992340374290374)

We get the following error message:

"[drive_letter]:\[path to python.exe]" [drive_letter]:/[path to script]

Process finished with exit code -1

-1 is not -992340374290374. What happened?

Upvotes: 0

Views: 88

Answers (2)

D Malan
D Malan

Reputation: 11414

This has to do with how your operating system handles the exit. In the documentation for sys.exit it says:

Most systems require it to be in the range 0–127, and produce undefined results otherwise.

Upvotes: 1

Chris_Rands
Chris_Rands

Reputation: 41158

From the sys.exit docs (emphasis mine):

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 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.

Upvotes: 5

Related Questions