Skip to content

异常处理

说明

SaiAdmin中,我们已经内置了异常处理类plugin\saiadmin\app\exception\Handler,调用类分别是plugin\saiadmin\exception\ApiExceptionplugin\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);
    }

}