配置Python的默认异常处理
在Python中,如果出现了没有被处理的错误,默认情况下它会打印出错误的详细信息和调用堆栈,然后程序就会结束。有人知道怎么在程序内部调整这个行为吗?也就是说,除了自己设置一个全局的错误处理程序之外,能不能让程序选择是否打印出调用堆栈的信息?我希望在我的应用中可以选择是否显示这个调用堆栈。
1 个回答
27
你在找 sys.excepthook:
sys.excepthook(type, value, traceback)
这个函数的作用是把出现的错误信息和追踪记录打印到系统的错误输出中。
当程序中发生了一个错误而没有被处理时,解释器会调用 sys.excepthook,并传入三个参数:错误的类型、错误的实例和追踪记录。在交互式会话中,这个调用发生在控制权返回到命令提示符之前;而在一个 Python 程序中,这个调用发生在程序即将退出之前。你可以通过给 sys.excepthook 赋值一个自定义的三参数函数,来改变这种顶层错误的处理方式。