【发布时间】:2013-05-23 02:24:29
【问题描述】:
我正在使用自定义异常来区分我的异常与 Python 的默认异常。
有没有办法在我引发异常时定义自定义退出代码?
class MyException(Exception):
pass
def do_something_bad():
raise MyException('This is a custom exception')
if __name__ == '__main__':
try:
do_something_bad()
except:
print('Oops') # Do some exception handling
raise
在这段代码中,main 函数在 try 代码中运行了几个函数。 捕获异常后,我想重新引发它以保留回溯堆栈。
问题是'raise'总是退出1。 我想使用自定义退出代码(对于我的自定义异常)退出脚本,并在任何其他情况下退出 1。
我已经查看了这个解决方案,但这不是我想要的: Setting exit code in Python when an exception is raised
此解决方案强制我检查我使用的每个脚本,异常是默认的还是自定义的。
我希望我的自定义异常能够告诉 raise 函数使用什么退出代码。
【问题讨论】:
-
我完全同意。您指出的旧 Q 必须通过将整个程序封装在
try/except子句中来解决问题。