异常处理
说明
在SaiAdmin
中,我们已经内置了异常处理类plugin\saiadmin\app\exception\Handler
,调用类分别是plugin\saiadmin\exception\ApiException
和plugin\saiadmin\exception\SystemException
,如果需要在自己的应用中使用,首先找到config\exception.php
文件,然后做以下配置:
php
<?php
return [
'' => \plugin\saiadmin\app\exception\Handler::class,
];
然后,应用过程中出现异常,就会自动被捕获处理。
ApiException
常规异常处理类,调用该类的时候,只返回错误信息给客户端,不会写入日志。
SystemException
系统异常处理类,调用该类时,不仅会返回错误信息给客户端,并且会将错误信息写入到日志中。
异常类如何使用
当我们在开发过程中,在控制器中我们可以直接通过 $this->success()
、$this->fail()
方法将错误信息返回给客户端,但是在其他场景无法直接使用这两个方法进行错误返回,此时我们可以使用 ApiException
类 和 SystemException
进行错误返回,使用范围非常广:
1、在logic层中使用
2、在model层中使用
3、在服务层中使用
4、在方法中直接使用
......
例如我们在logic中使用直接使用就可以将错误信息返回给客户端,而不需要做其他的异常传递处理。
php
/**
* 角色逻辑层
*/
class SystemRoleLogic extends BaseLogic
{
/**
* 修改数据
*/
public function edit($id, $data): mixed
{
$oldLevel = $data['level'] . "," . $id;
$data = $this->handleData($data);
if ($data['parent_id'] == $id) {
throw new ApiException('不能设置父级为自身');
}
$model = $query->findOrEmpty();
return $model->save($data);
}
}