laravel-response icon indicating copy to clipboard operation
laravel-response copied to clipboard

需求自定义一个异常返回状态码和错误提示

Open chihqiang opened this issue 1 year ago • 2 comments

起因: https://github.com/jiannei/laravel-response/blob/f33e30dd5c25f2bbf2ab278a7c04738bf16731fa/config/response.php#L31

在配置文件中‘exception’ 相当于一个异常只能有一个状态码,当我需求是需要定义100个或则更多的时候 ,按照这个逻辑我就需要定义出100个或则更多的异常

期望: 定义一个异常,然后我们可以直接抛出这个异常,也可以直接继承这个异常,在异常中响应对应的状态码

我目前的做法是: 首先我定义一个异常类

<?php

namespace Jiannei\Response\Laravel\Support;

class ResponseException extends \RuntimeException
{
    public function __construct(string $message = '', $code = 201)
    {
        parent::__construct($message, $code);
    }
}

然后我异常处理Handler进行拦截

protected function prepareJsonResponse($request, $e)
    {
        if (is_subclass_of($e, ResponseException::class) || get_class($e) === ResponseException::class) {
            return Response::fail($e->getMessage(), $e->getCode(), $this->convertExceptionToArray($e));
        }
       -------------------------略过您的代码------------------------------------------------------
    }

chihqiang avatar Sep 05 '24 10:09 chihqiang

是希望同一个异常能设置不同的响应code吗

jiannei avatar Mar 04 '25 06:03 jiannei

通过抛出的异常 响应message =异常的内容, 响应code = 异常的状态码

chihqiang avatar Mar 04 '25 07:03 chihqiang