AnsweredAssumed Answered

sys.exit() versus exit() to terminate a standalone script

Question asked by jborgion Champion on Jan 21, 2020
Latest reply on Jan 21, 2020 by bixb0012

I'm a little confused with the difference between these two approaches and could use some clarification.  I have a stand alone python script in which all my geo-processes are enclosed in try/except blocks which is my standard operating procedure.  However, in this particular script, if any exceptions are tossed, I want the script to abort.  It will be run as a scheduled task.

 

sys — System-specific parameters and functions — Python 3.8.1 documentation  mentions: 

 

sys.exit([arg])https://docs.python.org/3/library/sys.html#sys.exit

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

...

Since exit() ultimately “only” raises an exception, it will only exit the process when called from the main thread, and the exception is not intercepted.

 

If I try to use sys.exit in a console  I get scolded with:

 

sys.exit()
An exception has occurred, use %tb to see the full traceback.

SystemExit

C:\EnvClones\arcgispro-py3-clone243\lib\site-packages\IPython\core\interactiveshell.py:3327: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
  warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)

So using exit() is the clear favorite there.  Is sys.exit() preferred in a stand alone script?

Outcomes