Laravel未在自定义异常中调用报告方法

unftdfkk  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(120)

尝试使用自定义异常:

namespace App\Exceptions\Cloud;

use Exception;

class CantConfirmOrder extends Exception
{
    public function report()
    {
        info('test exception');
    }
}

但当我把它扔到修补匠-没有写日志:

>>> throw new CantConfirmOrder('test');
[!] Aliasing 'CantConfirmOrder' to 'App\Exceptions\Cloud\CantConfirmOrder' for this Tinker session.
App\Exceptions\Cloud\CantConfirmOrder with message 'test'

Handler.php:

public function report(Throwable $exception)
{
    parent::report($exception);
}

我需要用try catch手动调用report()吗?我想当我抛出时会自动调用它。

v8wbuo2f

v8wbuo2f1#

在HTTP请求的上下文中,路由将拾取此错误并调用report方法。因此,如果您在Controller方法或其他路由操作中抛出错误,则应调用它。您可以在以下测试中尝试:

Route::get('x', fn() => throw new CantConfirmOrder('test));  $this->get('x');

调用该方法的Route类/方法为
https://laravel.com/api/9.x/Illuminate/Routing/Pipeline.html#method_handleException

相关问题