我正在开发Yii2高级应用程序项目,我遇到了 yii2内置错误处理程序的问题。这是我的问题的描述:
我已经以这种方式在我的后端配置中设置了errorAction
:
'errorHandler' => [
'errorAction' => 'site/error',
],
现在,actionError()
中的方法SiteController
捕获了每个应用程序异常,用户定义的异常以及致命错误,除了yii\db\IntegrityException
之类的数据库相关异常。我不知道为什么,但是当发生这样的异常时,actionError()
什么都不做!我不希望用try-catch
块手动捕获异常,我希望中央ErrorHandler捕获所有异常。
如何解决此问题?特别感谢所有yii专家的关注。请帮我解决这个奇怪的问题。
答案 0 :(得分:0)
根据此GitHub问题:yiisoft/yii2/issues/10657以及@Yupik发表的评论,您必须更改YII_DEBUG
。
如果YII_DEBUG
为true
,您应该在调试模式下看到有关yii\db\IntegrityException
的正确消息。
如果YII_DEBUG
为false
(就像在生产环境中一样),则会将错误重定向到actionError()
,并以用户友好的模式查看。