不使用try catch而使用全局异常处理的问题

来源:6-16 登录优化- 控制器业务代码抽离到business层(最新)

帅的被狗撵

2020-11-28

图片描述

写回答

1回答

天经地义

2020-12-01

同学我们可以自定义异常文件,比如ClientException,然后统一异常处理的时候判断下只要是instanceof 属于这个的,就可以给前端看,否则就不给,在business里面的异常使用   throw new ClientException('验证码有误')

<?php
declare(strict_types=1);

namespace App\Exceptions;

use Exception;

class WarnException extends Exception
{
    // 状态码
    public $status = 500;

    // 错误提示
    public $message = '未知错误';

    // 错误码
    public $code = 0;

    // 错误返回给客户端的其他数据
    public $data = [];

    /**
     * ApiException constructor.
     * @param array|string $params
     */
    public function __construct($params = [])
    {
        is_string($params) && $this->message = $params;
        if(is_array($params)){
            array_key_exists('status',$params) && $this->status = $params['status'];
            array_key_exists('code',$params) && $this->code = $params['code'];
            array_key_exists('msg',$params) && $this->message = $params['msg'];
            array_key_exists('message',$params) && $this->message = $params['message'];
            array_key_exists('data',$params) && $this->data = $params['data'];
        }
    }
}

if ($exception instanceof ClientException) {
    // 自定义错误,错误是可以直接展示给客户端的
    return returnJson($exception->code, $exception->message, $exception->status, $exception->data);
}


0
2
帅的被狗撵
不过 我还是有点不太懂 ClientException 自定义类里面是什么,tp6我看自带了一个ClientException 客户端异常处理类,但是里面的参数不太明白
2020-12-02
共2条回复

全流程开发 TP6.0实战高并发电商服务系统

一课就能掌握TP6.0基础及运用,打造完整高并发的电商后端项目

1458 学习 · 1310 问题

查看课程