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

@@ -64,8 +64,7 @@ class RootStanza(StanzaBase):
# log the error
log.exception('Error handling {%s}%s stanza' %
(self.namespace, self.name))
# Finally raise the exception, so it can be handled (or not)
# at a higher level by using sys.excepthook.
raise e
# Finally raise the exception to a global exception handler
self.stream.exception(e)
register_stanza_plugin(RootStanza, Error)