1.8 KiB
1.8 KiB
异常机制
系统提供三种异常机制:
逻辑异常
逻辑异常为业务逻辑发生的异常,非预期的业务逻辑结果均可认为是异常,如变量校验、不被允许的操作等等,对于此类异常,可自行创建类似以下的异常类:
namespace diditao\user\exception;
use diditao\common\exception\AppError;
class BuyerRegException extends AppError
{
protected $exceptionKey='reg failed';
protected $status = 11000;
}
其中,$exceptionKey为exception.php中定义的key,$status为一个能被100整除的整数,为规范期间,公共部分接口为四位数,单独某个服务为五位数。
使用方法:
throw new BuyerRegException(string $appMsg = null,int $status=null,$appData=null,$errorData=null);
$appMsg:直接抛向前端的语义化错误提示
$status:最终抛向前端的status,注意,此处为追加,非替换,即如果要抛出11005,直接设置$status=5即可。
$appData:为抛向前端的data部分
$errorData:系统日志记录数据
可预知的系统异常
可预知的系统异常,比如不常见的redis异常,IO异常、mysql异常、第三方API异常等,针对此类异常,可以抛出可预知的系统异常,示例代码如下
throw new AppException(string $exceptionKey,string $msg,\Exception $e=null, int $errorLevel = 0);
$exceptionKey:为
exception.php中定义的key$msg:直接抛向前端的语义化错误提示
$e:接管的异常实例
$errorLevel:错误级别,数字越大代表异常级别越高,系统会针对不同的异常级别触发不同的警告
不可预知的系统异常
针对不可预知的系统异常,系统会抛出框架异常,并返回给前端统一的错误提示系统异常,请稍后再试