如果我在sys.excepthook = log_uncaught_exceptions
中写__main__
并且发生了未处理的异常:
__main__
,使用了新的异常处理程序。我可以将以下内容添加到我希望使用新异常处理程序的每个模块中:
import sys
from my_funcs import log_uncaught_exceptions
sys.excepthook = log_uncaught_exceptions
...但我觉得可以用更干净的方式完成,而且我不想修改我正在使用的第三方依赖项。
从上面的代码中创建模块并导入它并没有为该模块重新分配新的异常处理程序。
问题:为整个软件包重新分配异常处理程序的简洁方法是什么?
答案 0 :(得分:1)
使用main.py:
import sys
def except1(type,value,traceback):
print 'except1'
if __name__=='__main__':
sys.excepthook=except1
import foo
和foo.py就是这样:
raise Exception("foo exception")
我得到了
$ python main.py
except1
这是我的期望。你在任何" import"之前分配了sys.excepthook吗?语句?