diff options
| author | Claude Paroz <claude@2xlibre.net> | 2012-08-15 10:37:06 +0200 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2012-08-15 10:58:26 +0200 |
| commit | 64531df5df1fdb93af4eebaa7994716d6cd5b15f (patch) | |
| tree | e32f0857adfd28dc4b35a0715cb289f6f2e65c5b | |
| parent | 31ae103a1530752d0ee54e3883ca141a1cdb3f87 (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.py | 14 |
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 |
