雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

TP6.0 自定义异常处理类

2024-09-08 37

应用异常处理类, 另存一份" class="reference-link" target="_blank">1. 拷贝框架自带的 应用异常处理类, 另存一份


复制 app/ExceptionHandle.php, 另存为 app/ApiExceptionHandle.php

ApiExceptionHandle.php 中的 render() 方法中 自定义异常处理机制

public function render($request, Throwable $e): Response{    // 添加自定义异常处理机制    if (app('http')->getName() === 'api') {        // http请求异常处理        if ($e instanceof HttpException) {            return $this->json($e->getMessage(), $e->getStatusCode());        }        // 无效参数异常        if ($e instanceof \InvalidArgumentException) {            return $this->json($e->getMessage());        }        // 验证器异常处理机制        if ($e instanceof ValidateException) {            fault($e->getMessage());        }        // 其他异常处理(不是自己手动抛出的异常)        if (!empty($e->getMessage())) {            return $this->json($e->getMessage(), $e->getCode());        }    }    // 其他错误交给系统处理    return parent::render($request, $e);}/** * 返回json数据 * * @param string $msg   描述信息 * @param integer $code 状态码 */private function json(string $msg, int $code = 201){    return json(compact('code', 'msg'));}

自定义异常类可放在全局容器Provider定义文件, 也可放在应用目录下

全局容器Provider定义文件: app/provider.php

应用容器Provider定义文件: app/index/provider.php

<?php// 容器Provider定义文件return [    // 自定义异常处理    'think\exception\Handle' => app\ApiExceptionHandle::class,];

2. 自定义抛出异常的函数


/** * 抛出错误 * * @param string  $msg * @param integer $code */function fault(string $msg = "", int $code = 201){    throw new \Exception($msg, $code);}
更新于:2个月前
赞一波!

文章评论

评论问答