之前碰到一个很奇怪的问题
from raven import Client
client = Client(xxxdsn)
raise
为什么这样就会将异常发送sentry了,明明代码没有任何显式捕获异常的行为,它是怎么捕获异常的呢?
翻开raven源码,看到下面这样一段。
def install_sys_hook(self):
global __excepthook__
if __excepthook__ is None:
__excepthook__ = sys.excepthook
def handle_exception(*exc_info):
self.captureException(exc_info=exc_info)
__excepthook__(*exc_info)
sys.excepthook = handle_exception
答案就是sys.excepthook
。