我正在使用Laravel 5.1和Guzzle发送API请求。
我有两个函数,一个用于获取一个人,另一个用于检索有关该人的数据,因为每个函数都是一个单独的请求。
如果没有找到任何404响应代码被发送回并由laravel拾取。
然而,函数1的404响应与函数2的响应具有不同的含义,即使它们是相同的响应代码和异常但是guzzle。
我试图在方法的控制器中捕获错误,希望它会在laravels异常处理程序之前捕获它,但它似乎不起作用并被处理程序捕获。
如何在Laravels Exception处理程序之前在控制器中捕获Exception?
答案 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。