From f63525f7a44d7b5d12c327d1173f2c2680d56757 Mon Sep 17 00:00:00 2001 From: Ben Darnell Date: Mon, 27 Dec 2010 18:30:21 -0800 Subject: [PATCH] Fix stack trace logging for uncaught RequestHandler exceptions. _handle_request_exception is a private method, but since I've endorsed overriding it on the mailing list preserve backwards compatibility by re-raising the exception so it appears in sys.exc_info(). Closes #199. --- tornado/web.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tornado/web.py b/tornado/web.py index 70bd0113..d9e3c7e0 100644 --- a/tornado/web.py +++ b/tornado/web.py @@ -810,7 +810,14 @@ class RequestHandler(object): return self.application.reverse_url(name, *args) def _stack_context_handle_exception(self, type, value, traceback): - self._handle_request_exception(value) + try: + # For historical reasons _handle_request_exception only takes + # the exception value instead of the full triple, + # so re-raise the exception to ensure that it's in + # sys.exc_info() + raise type, value, traceback + except: + self._handle_request_exception(value) return True def _execute(self, transforms, *args, **kwargs):