4

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

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

如果没有找到任何一个 404 响应代码,则 laravel 会发回并接收它。

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

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

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

4

1 回答 1

8

在控制器顶部添加:

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在控制器的顶部使用,并捕获它,这个异常 extends BadResponseExceptionwhich 反过来 extends RequestException。有关更多详细信息,请参阅文档

于 2015-07-03T11:07:51.350 回答