为什么yii errorhandler没有捕获CDbexception

时间:2013-10-23 07:38:14

标签: php yii

在我的项目中,有一条CDbexception消息

  

CDbCommand无法执行SQL语句:SQLSTATE [42S02]:找不到基表或视图:1146表'xxx.xxx'不存在

数据库表不存在时,网页上的

dsiplay, 在这里,我想使用客户页面而不是CDBexception页面,但现在我发现Yii errorHandler无法捕获此错误。

那么在YII框架中应该配置哪些附加配置?

1 个答案:

答案 0 :(得分:0)

你可以做几件事:

1)使用try catch包围可能引发错误的代码:

try {
    //your sql code
} catch(CDbException $e) {
    // you redirect the user to the appropriate page, ...
}

2)使用build-in error handler

您可以在配置文件中激活它:

return array(
    ......
    'components'=>array(
        'errorHandler'=>array(
            'errorAction'=>'site/error',
        ),
    ),
);

在配置中,我们使用了操作site/error,因此您需要在项目中使用它。您可以创建此方法,如:

public function actionError()
{
    if($error=Yii::app()->errorHandler->error)
        $this->render('error', $error);
}

ps:代码来自yii指南!