我调用自定义sys.except_hook后可以阻止退出吗?

时间:2017-01-26 15:28:59

标签: python

有问题的代码:

import sys
def handler(exception_type, exception_value, traceback_object):
    print(exception_type, exception_value)    
sys.excepthook = handler

defined_thing = "Redacted faster than dissenting tweets"
print(defined_thing)
print(undefined_thing)
print("I wish I got here...")

结果:

Redacted faster than dissenting tweets
<class 'NameError'> name 'undefined_thing' is not defined

Process finished with exit code 1

问题:我可以阻止退出并继续打印错误吗?

2 个答案:

答案 0 :(得分:1)

没有

来自the docs(强调我的):

  

当引发异常且未被捕获时,解释器会调用   getOwnPropertyNames有三个参数,异常类,异常   实例和回溯对象。在这个交互式会话中   在控制返回到提示之前发生; Python中的   程序会在程序退出之前发生

您的except挂钩将运行,然后程序将退出。如果要捕获异常,则需要使用通常的try-except公式。

答案 1 :(得分:0)

有关该功能,请参阅documentation

sys.excepthook(类型,值,追溯)

此函数打印出给定的回溯和异常到sys.stderr。

除了提供额外的调试功能外,它什么也没做。