laravel之前的Laravel捕获错误

时间:2015-07-03 10:44:23

标签: laravel laravel-5 guzzle laravel-5.1

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:8)

在Controller的顶部添加:

use GuzzleHttp\Exception\RequestException;

将您的请求包裹在类似的尝试中:

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