Yii2 - 错误处理程序无法捕获数据库异常

时间:2017-12-06 09:33:50

标签: php yii yii2 yii2-advanced-app

我正在开发Yii2高级应用程序项目,我遇到了 yii2内置错误处理程序的问题。这是我的问题的描述:

我已经以这种方式在我的后端配置中设置了errorAction

'errorHandler' => [
    'errorAction' => 'site/error',
],

现在,actionError()中的方法SiteController捕获了每个应用程序异常,用户定义的异常以及致命错误,除了yii\db\IntegrityException 之类的数据库相关异常。我不知道为什么,但是当发生这样的异常时,actionError()什么都不做!我不希望用try-catch块手动捕获异常,我希望中央ErrorHandler捕获所有异常。

如何解决此问题?特别感谢所有yii专家的关注。请帮我解决这个奇怪的问题。

1 个答案:

答案 0 :(得分:0)

根据此GitHub问题:yiisoft/yii2/issues/10657以及@Yupik发表的评论,您必须更改YII_DEBUG

如果YII_DEBUGtrue,您应该在调试模式下看到有关yii\db\IntegrityException的正确消息。

如果YII_DEBUGfalse(就像在生产环境中一样),则会将错误重定向到actionError(),并以用户友好的模式查看。