怎样捕捉PHP Error

在运行Yii,调试模式状态下(也就是在index.php里面设置


defined('YII_DEBUG') or define('YII_DEBUG',true);

),经常在遇到错误的时候会抛出这样的提示:




PHP Error


Description


Undefined index: XXXX


Source File


/XXXX.php(XXX)



我想问一下,怎么才能做到自己来捕捉这些错误呢?

下面代码:




try

{

    //假设这里的代码有时候会出现一些错误,比如说请求远程的东西的时候超时,导致返回的结果为空

}

catch (Exception $e)

{

    //这里我想自己来做一些处理

}



但是很奇怪,出现错误时,代码在try里面已经停下来了,错误被Yii捕获,而不是跑到我的catch里面。

有什么方法可以不要这样吗?

我知道比较迂回的方法是,在index.php里面把YII_DEBUG设为false,这样会跑到默认的SiteController的actionError里面来进行处理,但是我不想这样子,我想实现的是,跑到我的catch里面,可以吗?

PHP error不是exception, 是不能用try…catch来捕获的。

Yii是通过设置set_error_handler来获得出错信息的。你可以试试自己写一个error handler,在其中throw 一个exception。

谢谢qiang哥提醒