Python:使例外'退出'

时间:2016-12-06 09:26:13

标签: python exception exception-handling

在Python中,是否有任何(正确的)方法来更改默认的异常处理行为,以便任何未捕获的异常将终止/退出程序?

我不想将整个程序包装在一个通用的try-except块中:

try:
    // write code here
except Exception:
    sys.exit(1)

对于那些要求更多特异性和/或声称已经是这种情况的人来说,我的理解是并非所有Python异常都是系统退出的:docs

编辑:看起来我的分叉流程使问题变得复杂,所以不会发布有关我自己的混乱的任何具体细节。

如果您正在寻找原始问题的答案,Dmitry的评论很有趣且有用,请参考this question的第二个答案

1 个答案:

答案 0 :(得分:0)

您可以使用特定异常而不是异常,因为异常是所有异常的基类。有关详细信息,请参阅Exception tutorial

您可以像这样编写脚本 -

try:
   # write code here
except OverflowError:
   raise SystemExit
except ArithmeticError:
   sys.exit()
except IOError:
   quit()

尝试这种不同的方法来找到你究竟缺少的东西。

编辑1 - 维护程序执行

为了维持你的程序执行,试试这个 -

考虑error_handler函数正在引发SystemExit异常然后在你的main方法中你需要添加下面的代码,这样你就可以维护你的程序执行。

try:
   error_handler()
except SystemExit:
   print "sys.exit was called but I'm proceeding anyway (so there!-)."