Opt*_*mus 18 python django error-handling
当处理程序中遇到异常时,如何使Django信号处理程序不会无声地失败?
在使用开发服务器时是否存在记录所有这些错误的位置?
为什么django信号处理程序无论如何都会无声地失败?是不是反对Python的Zen中的一行?
Python的禅宗明确表示......
错误不应该默默地传递.
它使它们成为调试的噩梦.你只能看到信号没有被解雇......
我发现了这个问题,但答案对我来说没用,因为它对问题非常具体(答案建议使用pyflakes,我已经使用pydev进行了令人满意的静态分析)
是的,我和你一样认为:错误永远不应该默默地失败
Django 的内置信号不会静默失败,因为它们使用 send()
send_robust()
忽略异常来自send_robust() 的文档
send_robust() 捕获从 Python 的 Exception 类派生的所有错误,并确保所有接收器都收到信号通知。如果发生错误,则错误实例在引发错误的接收者的元组对中返回。
由于 django 不使用,send_robust()
请调查它在哪里被调用。我猜它在您的源代码中,或者在第三方应用程序的代码中。
使用manage.py shell
时,从您的示例手动创建 FollowTable 时出现未捕获的异常。但是,请求期间未捕获的异常不会显示在终端中(除了显示 500 已返回),而是显示在浏览器中。如果您使用 JavaScript 发出请求,您可能需要查看 firebug/chrome 开发人员工具,看看它是否正在返回回溯。
看起来其他人已经回答了如何在控制台中显示回溯:https : //stackoverflow.com/a/5886462/725359
似乎对我有用。我做了以下事情:
ExceptionLoggingMiddleware
类添加到my_app/__init__.py
'my_app.ExceptionLoggingMiddleware'
到MIDDLEWARE_CLASSES
在settings.py
归档时间: |
|
查看次数: |
2203 次 |
最近记录: |