全局Exception中获取自定义Exception中的自定义数据

在 Laravel 的异常处理中,可以通过重写自定义异常类的 report 方法来获取用户自定义的异常数据。以下是一种可能的实现方式:

首先,在自定义异常类中,添加一个 report 方法,并将自定义的数据作为参数传递:

use Exception;

class CustomException extends Exception
{
    protected $data;

    public function __construct($message, $data)
    {
        parent::__construct($message);
        $this->data = $data;
    }

    public function report()
    {
        // 在这里可以将自定义数据记录到日志或其他地方
        // 可以使用 $this->data 访问自定义数据
    }
}

然后,在异常处理器类(通常是 app/Exceptions/Handler.php)的 report 方法中,可以检查异常是否为自定义异常,并调用其 report 方法:

use App\Exceptions\CustomException;

public function report(Exception $exception)
{
    if ($exception instanceof CustomException) {
        $exception->report();
    }

    parent::report($exception);
}

通过这种方式,当自定义异常被抛出时,异常处理器类的 report 方法将调用自定义异常类的 report 方法,从而可以访问到用户自定义的数据。在 report 方法中,你可以根据需要将数据记录到日志文件、数据库或其他地方。

请注意,如果你希望在异常处理器类的 render 方法中访问用户自定义的数据,可以使用以下方式:

public function render($request, Exception $exception)
{
    if ($exception instanceof CustomException) {
        $data = $exception->data;
        // 使用 $data 进行处理
    }

    return parent::render($request, $exception);
}

render 方法中,你可以根据需要获取用户自定义的数据,并在异常处理过程中使用它们。

原文地址

blog.mailjob.net/posts/194135748.h...

本作品采用《CC 协议》,转载必须注明作者和本文链接
微信公众号:《汀风说后端》。个人网站:blog.mailjob.net
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!