Hi all

Currently, if a view throws an exception, the middleware classes that
have a process_exception method will be called in reverse order to see
if one of them can handle it and return a valid response before
django's default exception handling takes over.

This doesn't hold true for middleware classes themselves - any
exception raised from a middleware's process_{request,view,response}
is immediately handled by django's default exception handling, and
there is no way of handling that exception more cleanly.

The use case I saw for this was for a series of exceptions that
middleware classes could raise, which would then be handled by another
piece of middleware. As an example, my project has a bunch of
automatic authenticators - IP based, SAML based, crufty tokens
produced by Lotus Notes - but they failures in all of them should be
handled the same. Raising a generic exception in the appropriate
middleware, and then handling it in another middleware class seemed a
nice clean way of doing this, I was disappointed when I read
core/handlers/base.py

It wouldn't be tricky to change this so that exceptions raised from
middleware can be handled by middleware, but obviously this would be a
not inconsequential change in behaviour..

Thoughts?

Cheers

Tom

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to