summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2012-08-15 10:37:06 +0200
committerClaude Paroz <claude@2xlibre.net>2012-08-15 10:58:26 +0200
commit64531df5df1fdb93af4eebaa7994716d6cd5b15f (patch)
treee32f0857adfd28dc4b35a0715cb289f6f2e65c5b
parent31ae103a1530752d0ee54e3883ca141a1cdb3f87 (diff)
Sent got_request_exception signal before handle_uncaught_exception
In some cases (notably Python 3), when handle_uncaught_exception was itself raising an exception, the got_request_exception was storing the latter exception instead of the original exception.
-rw-r--r--django/core/handlers/base.py14
1 files changed, 5 insertions, 9 deletions
diff --git a/django/core/handlers/base.py b/django/core/handlers/base.py
index 745b6ca3ad..3fc40358d0 100644
--- a/django/core/handlers/base.py
+++ b/django/core/handlers/base.py
@@ -152,10 +152,8 @@ class BaseHandler(object):
callback, param_dict = resolver.resolve404()
response = callback(request, **param_dict)
except:
- try:
- response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
- finally:
- signals.got_request_exception.send(sender=self.__class__, request=request)
+ signals.got_request_exception.send(sender=self.__class__, request=request)
+ response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
except exceptions.PermissionDenied:
logger.warning(
'Forbidden (Permission denied): %s', request.path,
@@ -167,12 +165,10 @@ class BaseHandler(object):
callback, param_dict = resolver.resolve403()
response = callback(request, **param_dict)
except:
- try:
- response = self.handle_uncaught_exception(request,
- resolver, sys.exc_info())
- finally:
- signals.got_request_exception.send(
+ signals.got_request_exception.send(
sender=self.__class__, request=request)
+ response = self.handle_uncaught_exception(request,
+ resolver, sys.exc_info())
except SystemExit:
# Allow sys.exit() to actually exit. See tickets #1023 and #4701
raise