first commit
This commit is contained in:
55
滴滴淘/diditao/doc/exception.md
Normal file
55
滴滴淘/diditao/doc/exception.md
Normal file
@@ -0,0 +1,55 @@
|
||||
## 异常机制
|
||||
|
||||
系统提供三种异常机制:
|
||||
|
||||
### 逻辑异常
|
||||
|
||||
逻辑异常为业务逻辑发生的异常,非预期的业务逻辑结果均可认为是异常,如变量校验、不被允许的操作等等,对于此类异常,可自行创建类似以下的异常类:
|
||||
|
||||
```
|
||||
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:错误级别,数字越大代表异常级别越高,系统会针对不同的异常级别触发不同的警告
|
||||
|
||||
### 不可预知的系统异常
|
||||
|
||||
针对不可预知的系统异常,系统会抛出框架异常,并返回给前端统一的错误提示`系统异常,请稍后再试`
|
||||
Reference in New Issue
Block a user