首页 > 主页 > tongfuapi
日志:17 评论:0
北京, 东城
错误处理,异常处理

概述

介绍

php有两种错误处理方式,一种是通过自定义错误,一种是使用抛异常。
根据错误级别可以分为,“可继续”错误,“不可继续”错误
“可继续”错误又分为,需要记录错误,不需要记录错误
原则

  • “可继续”错误:指错误不影响主线业务执行的级别

  • “不可继续”错误:指错误影响主线业务执行的级别

  • “可继续”需要记录错误:指错误不影响主线业务执行,但是需要记录起来

  • “可继续”不需要记录错误:指错误不影响主线业务执行,而且不需要记录起来

举例

“可继续”错误

写日志行为,一般情况下是不会影响主线业务的,所以这里的返回值的合法性就是属于“可继续”错误

$ret = $logObj->write("...");
if(!$ret){

}

“不可继续”错误

创建用户行为,这个是属于业务需要的必要逻辑,所以这里的返回值的合法性就是属于“不可继续”错误

$ret = $userObj->create("...");
if(!$ret){

}

“可继续”需要记录错误

计数器功能,这个一般情况下是不影响主线业务的,但是我们需要记录起来日后解决掉

$ret = $counterObj->increase(1);

“可继续”不需要记录错误

可继续又不需要记录的错误,就是我们编写代码的时候可以忽略的错误
一般情况下,所以逻辑的错误都做响应的处理

...

处理

  • “可继续”错误:这种错误我们不要用 Exception 处理,用 trigger_error 处理就好,避免给上游代码增加负担,记录起来就好了

  • “不可继续”错误:这种错误我们最好用 Exception 处理,不要用 trigger_error 处理,要通知上游错误的发生

  • “可继续”需要记录错误:这种错误,我们通过 trigger_error 处理后,在 error_log 里就可以捕获到了

  • “可继续”不需要记录错误:这种错误,我们可以忽略不予理睬

自定义错误

适用

Error

error 级别的自定义错误建议使用 Exception 替代

Warning

warning 级别的自定义错误适用于“可继续”需要记录的错误,错误信息会写入到 error_log 里便于日后处理

函数

trigger_error('[错误信息]', E_USER_ERROR);

抛异常

代码

throw new Exception('[异常信息]', [异常码]);