Во время написания приложения, вы можете использовать следующий подход:
Всякий раз, когда ваше приложение вызывает исключение, использовать пользовательские, исключения для отдельных приложений, как этот
class FooException(Exception):
"""Base class for all app specific exceptions"""
pass
classFooPermissionException(FooException):
"""Specific class for permission related exceptions"""
pass
Теперь ваше приложение может предоставить пользовательские промежуточного программного
class FooExceptionMiddleware(object):
"""App specific middleware to handle app specific errors"""
def process_exception(self, request, e):
"""Processes exceptions"""
if isinstance(e, FooException):
if isinstance(e, FooPermissionException):
# handle PermissionExceptions here...
return None
Вы можете прочитать больше о Django промежуточного here.
Edit:
Я думаю, что вы можете использовать выше подход, чтобы поймать всех Exceptions
: Посмотрите на Django's exception source code. Внутренние исключения Django - это братья и сестры Exception
. Итак, с чем-то вроде следующего кода, вы можете поймать все исключения, где бы они ни поднимались в вашем проекте:
class AllExceptionMiddleware(object):
def process_exception(self, request, e):
if isinstance(e, Exception):
# do stuff
return None
Поскольку в данный момент ваш вопрос слишком широк. Было бы лучше, если бы вы показали нам, что вы пробовали, и по мере того, как вы сталкиваетесь с трудностями, мы можем помочь вам решить их. –