## 异常机制 系统提供三种异常机制: ### 逻辑异常 逻辑异常为业务逻辑发生的异常,非预期的业务逻辑结果均可认为是异常,如变量校验、不被允许的操作等等,对于此类异常,可自行创建类似以下的异常类: ``` 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:错误级别,数字越大代表异常级别越高,系统会针对不同的异常级别触发不同的警告 ### 不可预知的系统异常 针对不可预知的系统异常,系统会抛出框架异常,并返回给前端统一的错误提示`系统异常,请稍后再试`