So using sys.excepthook to catch errors only works once.

The error bubbles through the event processing loop, breaking it and
hanging the application.

Instead, there is now a .exception(e) method on XMLStream which may
be overridden or reassigned that will receive all unhandled exceptions
(read: not XMPPError) from event and stream handlers.
This commit is contained in:
Lance Stout
2011-07-01 15:15:13 -07:00
parent d8d9e8df16
commit 2a2ac73845
6 changed files with 112 additions and 39 deletions

View File

@@ -12,7 +12,6 @@ class TestStreamDisco(SleekTest):
"""
def tearDown(self):
sys.excepthook = sys.__excepthook__
self.stream_close()
def testInfoEmptyDefaultNode(self):
@@ -531,11 +530,6 @@ class TestStreamDisco(SleekTest):
raised_exceptions = []
def catch_exception(*args, **kwargs):
raised_exceptions.append(True)
sys.excepthook = catch_exception
self.stream_start(mode='client',
plugins=['xep_0030', 'xep_0059'])
@@ -544,8 +538,14 @@ class TestStreamDisco(SleekTest):
iterator=True)
results.amount = 10
def run_test():
try:
results.next()
except StopIteration:
raised_exceptions.append(True)
t = threading.Thread(name="get_items_iterator",
target=results.next)
target=run_test)
t.start()
self.send("""