Author: mtredinnick
Date: 2008-07-19 13:49:49 -0500 (Sat, 19 Jul 2008)
New Revision: 7988

Modified:
   django/trunk/django/core/handlers/base.py
Log:
Fixed #7471 -- If the 400 response handler raises an exception, pass control to
the 500 handler (if that then raises an exception, it's just not your day).

Patch from Leah Culver.


Modified: django/trunk/django/core/handlers/base.py
===================================================================
--- django/trunk/django/core/handlers/base.py   2008-07-19 18:47:59 UTC (rev 
7987)
+++ django/trunk/django/core/handlers/base.py   2008-07-19 18:49:49 UTC (rev 
7988)
@@ -107,8 +107,11 @@
                 from django.views import debug
                 return debug.technical_404_response(request, e)
             else:
-                callback, param_dict = resolver.resolve404()
-                return callback(request, **param_dict)
+                try:
+                    callback, param_dict = resolver.resolve404()
+                    return callback(request, **param_dict)
+                except:
+                    return self.handle_uncaught_exception(request, resolver, 
sys.exc_info())
         except exceptions.PermissionDenied:
             return http.HttpResponseForbidden('<h1>Permission denied</h1>')
         except SystemExit:
@@ -118,9 +121,6 @@
             # Get the exception info now, in case another exception is thrown 
later.
             exc_info = sys.exc_info()
             receivers = dispatcher.send(signal=signals.got_request_exception, 
request=request)
-
-            if settings.DEBUG_PROPAGATE_EXCEPTIONS:
-                raise
             return self.handle_uncaught_exception(request, resolver, exc_info)
 
     def handle_uncaught_exception(self, request, resolver, exc_info):
@@ -136,6 +136,9 @@
         from django.conf import settings
         from django.core.mail import mail_admins
 
+        if settings.DEBUG_PROPAGATE_EXCEPTIONS:
+            raise
+
         if settings.DEBUG:
             from django.views import debug
             return debug.technical_500_response(request, *exc_info)


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to