Laravel 在 laravel 之前捕获错误

Laravel catch error before laravel does

我正在使用 Laravel 5.1 和 Guzzle 发送 API 请求。

我有两个函数,一个是获取一个人,第二个是检索关于这个人的数据,因为每个都是一个单独的请求。

如果没有找到任何一个 404 响应代码,并由 laravel 接收。

然而,函数 1 的 404 响应与函数 2 的响应具有不同的含义,即使它们是相同的响应代码和异常,但也很麻烦。

我已经尝试在控制器中捕获该方法的错误,希望它能在 laravel 的异常处理程序执行之前捕获它,但它似乎不起作用并被处理程序捕获。

如何在 Laravels 异常处理程序之前捕获控制器中的异常?

在控制器的顶部添加:

use GuzzleHttp\Exception\RequestException;

像这样在 try catch 中包装您的请求:

try {
    $client->get('https://github.com/_abc_123_404');
} catch (RequestException $e) {
    echo $e->getRequest();
    if ($e->hasResponse()) {
        echo $e->getResponse();
    }
}

你可以捕获任何 Guzzle 异常,如果你只想捕获 404,那么你可以尝试在你的控制器顶部使用 ClientException 并捕获它,这个异常扩展 BadResponseException这又扩展了 RequestException。有关详细信息,请参阅 documentation