Django-捕获异常


问题内容

这可能是一个Python新手问题…

try:
   #do something
except:
   raise Exception('XYZ has gone wrong...')

即使DEBUG = True,我也不希望这raise Exception给我黄页。我实际上是想通过将用户重定向到错误页面或显示错误来处理异常(在页面顶部给出CSS错误消息…)

我该如何处理?有人可以指导我吗?如果仅提高它,我将得到黄色的调试页面(再次,当DEBUG = True时,我不希望某些异常通过显示调试页面来阻止站点运行)。

如何在views.py中处理这些异常?

谢谢。


问题答案:

您在这里有三个选择。

  1. 提供404处理程序或500处理程序
  2. 在代码的其他地方捕获异常并进行适当的重定向
  3. 提供带有process_exception实施的自定义中间件

中间件示例:

class MyExceptionMiddleware(object):
    def process_exception(self, request, exception):
        if not isinstance(exception, SomeExceptionType):
            return None
        return HttpResponse('some message')