Laravel在laravel之前捕获错误

Jos*_*ick 4 laravel guzzle laravel-5 laravel-5.1

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

我有两个函数,一个用于获取一个人,另一个用于检索有关该人的数据,因为每个函数都是一个单独的请求.

如果没有找到任何404响应代码被发回并由laravel拾取.

然而,来自函数1的404响应与来自函数2的响应具有不同的含义,即使它们是相同的响应代码和异常而是guzzle.

我试图在方法的控制器中捕获错误,希望它会在laravels异常处理程序之前捕获它,但它似乎不起作用并被处理程序捕获.

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

Fra*_*ere 8

在Controller的顶部添加:

use GuzzleHttp\Exception\RequestException;
Run Code Online (Sandbox Code Playgroud)

像你这样尝试抓住你的请求:

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

你可以捕获任何Guzzle异常,如果你只想捕获404,那么你可以尝试ClientException在你的控制器的顶部使用,并抓住它,这个异常扩展BadResponseException,反过来扩展RequestException.有关详细信息,请参阅文档.