On 2/7/2014, 4:47 PM, Guido van Rossum wrote:
>And one more, aesthetic question: the currently agreed on signature of
>exception handlers is '(loop, context)'. I have a method
>"BaseEventLoop.default_exception_handler(self, context)", but when the
>method is bound, its signature is just '(context)', hence, this bound
>method cannot be passed to 'set_exception_handler'. Should the signature be
>"BaseEventLoop.default_exception_handler(self, loop, context)", or can I
>just make it a staticmethod with '(loop, context)'?
>
But why would you want to pass the default handler to
set_exception_handler()? I had expected that there would be something like
this:

def call_exception_handler(self, exception, context):
     if self._exception_handler is not None:
         try:
             self._exception_handler(self, exception, context)
             return
         except Exception as exc:
             self.default_exception_handler(exc, {'message': 'custom
exception handler failed'})
         self.default_exception_handler(exception, context)
That's almost exactly the code I currently have.

And the question is rather rhetorical: i.e. if it's OK to pass
"loop.default_exception_handler" to "loop.set_exception_handler" [1]
or it shouldn't be used that way, always use
"loop.set_exception_handler(None) [2]". I like the [2], and that's
how I have it implemented now, but wanted to confirm it with the list.

Yury

Reply via email to