正如Ned所指出的,sys.excepthook
每次引发并捕获异常时都会调用它。实际的含义是,在您的代码中,您可以覆盖sys.excepthook
做任何您想做的事情(包括使用logging.exception
)的默认行为。
作为一个稻草人的例子:
>>> import sys
>>> def foo(exctype, value, tb):
... print 'My Error Information'
... print 'Type:', exctype
... print 'Value:', value
... print 'Traceback:', tb
...
覆写sys.excepthook
:
>>> sys.excepthook = foo
>>> def bar(a, b)
My Error Information
Type: <type 'exceptions.SyntaxError'>
Value: invalid Syntax (<stdin>, line 1)
Traceback: None
有关更多信息sys.excepthook
,请阅读文档。