Когда скрученный реактор работает и в отложенном случае возникает исключение, которое не было перехвачено, на терминал выводится «Необработанная ошибка» вместе с трассировкой и исключением. Можно ли обработать/перехватить эти исключения (например, установить обратный вызов или переопределить метод)?
РЕДАКТИРОВАТЬ: я знаю, что могу поймать сбой, добавив 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