Stopping Torceu de engolir exceções
Existe uma maneira de impedir que o reator Twisted engula exceções automaticamente (por exemplo, NameError)? Eu só quero que ele pare a execução e me dê um rastreamento de pilha no console?
Existe até um FAQquestã, mas para dizer o mínimo, não ajuda muit
Atualmente, em cada erro eu faço isso:
def errback(value):
import traceback
trace = traceback.format_exc()
# rest of the errback...
mas parece desajeitado, e tem que haver uma maneira melhor?
AtualizaEm resposta à resposta de Jean-Paul, tentei executar o seguinte código (com o Twisted 11.1 e 12.0):
from twisted.internet.endpoints import TCP4ClientEndpoint
from twisted.internet import protocol, reactor
class Broken(protocol.Protocol):
def connectionMade(self):
buggy_user_code()
e = TCP4ClientEndpoint(reactor, "127.0.0.1", 22)
f = protocol.Factory()
f.protocol = Broken
e.connect(f)
reactor.run()
Depois de executá-lo, ele simplesmente fica lá, então eu tenho que pressionar Ctrl-C:
> python2.7 tx-example.py
^CUnhandled error in Deferred:
Unhandled Error
Traceback (most recent call last):
Failure: twisted.internet.error.ConnectionRefusedError: Connection was refused by other side: 111: Connection refused.