我正试图在我的WebSocketHandler中捕获未捕获的异常。但是Tornado的WebSocketHandler没有与HTTP RequestHandler相同的异常处理接口。
在上面的源代码中,看起来似乎捕获并记录了异常:
def _run_callback(self, callback, *args, **kwargs):
"""Runs the given callback with exception handling.
On error, aborts the websocket connection and returns False.
"""
try:
callback(*args, **kwargs)
except Exception:
app_log.error("Uncaught exception in %s",
self.request.path, exc_info=True)
self._abort()
有没有更好的方法来捕获WebSocketProtocol
中的异常?
WebSocketHandler
子类化?
答案 0 :(得分:0)
子类化和覆盖WebSocketProtocol._run_callback
是目前从基类执行此操作的最佳方法。但是由于子类和覆盖此方法很麻烦,因此在proper support can be added to the framework之前在应用程序级别处理此问题可能更好。将所有回调包装在一个大的try / except块中,或者如果你有足够的回调,这会让你感到恼火,你可以制作你自己的异常捕获装饰。