Когда витой реактор работает и в отложенном состоянии возникает исключение, которое не перехвачено, на терминал выводится «Необработанная ошибка» вместе с отслеживанием и исключением. Можно ли обработать / перехватить эти исключения (например, установить обратный вызов или переопределить метод)?
РЕДАКТИРОВАТЬ: я знаю, что я могу поймать сбой, добавив errback к deferrerd. Я хочу знать, есть ли способ перехватить необработанный сбой / исключение, которое прошло по цепочке к реактору.
РЕДАКТИРОВАТЬ: По сути, мне интересно, есть ли у закрученного реактора глобальный обработчик ошибок или что-то, что может быть доступно. Мне интересно, потому что он печатает трассировку и ошибку от сбоя.
Пример:
Unhandled Error
Traceback (most recent call last):
File "/var/projects/python/server.py", line 359, in run_server
return server.run()
File "/var/projects/python/server.py", line 881, in run
reactor.run()
File "/usr/local/lib/python2.6/dist-packages/Twisted-11.0.0-py2.6-linux-x86_64.egg/twisted/internet/base.py", line 1162, in run
self.mainLoop()
File "/usr/local/lib/python2.6/dist-packages/Twisted-11.0.0-py2.6-linux-x86_64.egg/twisted/internet/base.py", line 1171, in mainLoop
self.runUntilCurrent()
--- <exception caught here> ---
File "/usr/local/lib/python2.6/dist-packages/Twisted-11.0.0-py2.6-linux-x86_64.egg/twisted/internet/base.py", line 793, in runUntilCurrent
call.func(*call.args, **call.kw)
File "/var/projects/python/server.py", line 524, in monitor
elapsed = time.time() - info.last
exceptions.NameError: global name 'info' is not defined