如何阻止python脚本终止?

时间:2017-01-14 09:31:58

标签: python

通常,try/except子句用于处理错误和异常,捕获它们并相应地执行操作。但是假设有一个脚本,用户不确定可以引发异常的位置。现在不是在任何地方应用try / except,是否有任何模块或装饰器可以捕获任何异常发生并简单地让程序不会中断?

编辑:这不能与try / except问题重复。当然我知道它并且可以将它应用到我知道异常可能发生的所有可能的地方。我专门寻找一些处理异常处理的模块或装饰器。在引发错误之前调用的内置函数也可以解决问题。

1 个答案:

答案 0 :(得分:2)

处理异常的正确方法是使用围绕可能引发异常的代码段的try / except块。有时这意味着将main()函数(或任何函数运行整个程序)包装在try / except块中。没关系。如果你想完全忽略异常,你可以使用contextlib.suppress,这也很好,可以为你节省几行代码。

现在,如果由于某种原因您需要对未捕获的异常做出反应,并且您无法使用try / except包围相关的代码段,则可以将sys.excepthook设置为一个函数,它接受异常信息作为参数并实现你想要的任何处理,例如记录异常。这是一个相当粗糙的机制,但我不建议在正常情况下使用它。 (据我所知,它不能阻止异常被提升,如果这是你要求的 - 它只能让你有机会在堆栈展开之前运行你自己的一些代码该计划结束。)