Ошибка перехвата Laravel до того, как Laravel это сделает

Я использую Laravel 5.1 и Guzzle для отправки запросов API.

У меня есть две функции, одна для получения человека, а вторая для получения данных о человеке, так как каждая из них является отдельным запросом.

Если ничего не найдено, код ответа 404 отправляется обратно и принимается laravel.

Однако ответ 404 от функции 1 имеет другое значение, чем ответ от функции два, даже если они имеют тот же код ответа и исключение, но жрут.

Я попытался поймать ошибку в контроллере для метода в надежде, что он поймает ее до того, как это сделает обработчик исключений laravels, но, похоже, он не работает и попадает в обработчик.

как я могу поймать исключение в контроллере перед обработчиком исключений Laravels?


person Josh Kirkpatrick    schedule 03.07.2015    source источник


Ответы (1)


В верхней части контроллера добавьте:

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. Дополнительные сведения см. в документации.

person Francesco de Guytenaere    schedule 03.07.2015
comment
Большое спасибо, я на самом деле пробовал это, но я думаю, что забыл импортировать RequestException, спасибо - person Josh Kirkpatrick; 03.07.2015