在Plone中解开未发现的错误并查看其真正的异常
以下内容来自Zope的BaseRequest.py:在Plone中解开未发现的错误并查看其真正的异常,plone,zope,Plone,Zope,以下内容来自Zope的BaseRequest.py: # traverseName() might raise ZTK's NotFound except (KeyError, AttributeError, ztkNotFound): if response.debug_mode: return response.debugError(
# traverseName() might raise ZTK's NotFound
except (KeyError, AttributeError, ztkNotFound):
if response.debug_mode:
return response.debugError(
"Cannot locate object at: %s" % URL)
else:
return response.notFoundError(URL)
它将各种异常转换为未找到页面。这对网站开发者来说是非常糟糕的,他们不知道网站到底出了什么问题
如何禁用此机制,显然是response.debug_模式,这样您就可以看到真正的异常
当Plone在调试模式下运行时
单元测试和功能测试
当Plone在生产模式下运行时,例如,临时查看某些URL确实失败的原因
既然您已经找到了有问题的代码,您应该已经看到没有这样的开关。为什么不为Zope提交一个功能请求呢?使用ZCML布线、猴子补丁等,你永远不知道触发器是否隐藏在某个地方:FR那么它应该是。KeyError和AttributeError可能发生在遍历上,这就是为什么它被视为404。如果您担心这些错误会被吞没,您应该在您的自定义代码中处理它们。通常简单的原因是您的视图或模板代码中缺少变量,并且它稍后会被转换为404。我几乎认为这是一个bug,因为它对不知道这个Zope特性的新开发人员来说调试变得困难和不可能。最好让Python DEVs切换@属性异常也变成AdvestError特性,然后。P