Intereting Posts
Файл cookie SessionId в CakePHP вызывает зависание страницы PHP DomDocument, повторное использование XSLTProcessor, стабильно / безопасно? Можно ли создать маршрут, который указывает на абсолютный внешний URL? Отправка твита с помощью oauth-php? Высокие значения круговых диаграмм HighCharts X-axies не отображаются при попытке получить данные из базы данных MySQL с помощью PHP Как создать рекурсивную функцию для отображения всех комбинаций многоуровневого массива? Проблема с автоинкрементным столбцом «id» Какая правильная длина случайного кода используется как атрибут select / join mysql Как я могу обновить только определенные поля в структуре Yii? PHP Session не сохраняется в Firefox после перенаправления nohup на windows, exec, не дожидаясь окончания Какой-то способ получить цвета из строки в php? Проблема с настройкой полосы импортировать данные txt / csv в базу данных в соответствии с заголовком таблицы базы данных Как узнать, не удалось ли выполнить запрос в Laravel 4?

Как обойти Laravel Обработка исключений

У меня есть метод, который проверяет, имеет ли пользователь действительную информацию сеанса. Это должно Guzzle\Http\Exception\BadResponseException исключение, исключение Guzzle\Http\Exception\BadResponseException но когда я пытаюсь его поймать:

 catch (Guzzle\Http\Exception\BadResponseException $e) { return false; } return true 

Laravel не добирается до этого кода и сразу же начинает свою собственную обработку ошибок. И идеи о том, как обойти Laravels собственную реализацию и использовать мой собственный Catch.

EDIT: Я только что узнал, что Laravel использует тот же обработчик Exception, что и Symfony, поэтому я также добавил тег Symfony2.

EDIT 2:

Я как бы устранил проблему, отключив исключения Guzzle и проверив заголовок возврата вручную. Это немного короткое сокращение, но в этом случае он выполняет эту работу. Спасибо за ответы!

Related of "Как обойти Laravel Обработка исключений"

На самом деле это исключение можно найти в Laravel, вам просто нужно уважать (и понимать) пространство имен:

Если у вас есть

 namespace App; 

и вы делаете

 catch (Guzzle\Http\Exception\BadResponseException $e) 

PHP понимает, что вы пытаетесь

 catch (\App\Guzzle\Http\Exception\BadResponseException $e) 

Таким образом, для его работы вам просто нужна косая черта:

 catch (\Guzzle\Http\Exception\BadResponseException $e) 

И это сработает.

По умолчанию файл app/start/global.php содержит обработчик ошибок для всех исключений. Однако при необходимости вы можете указать больше обработчиков. Обработчики вызываются на основе type-hint на Исключение, которое они обрабатывают. Например, вы можете создать обработчик, который обрабатывает только ваши экземпляры BadResponseException , например

 App::error(function(Guzzle\Http\Exception\BadResponseException $exception) { // Handle the exception... return Response::make('Error! ' . $exception->getCode()); }); 

Кроме того, убедитесь, что у вас есть хорошо определенный класс ( BadResponseException ). Подробнее о Laravel Documentation .

Вместо вашего кода

 catch (Guzzle\Http\Exception\BadResponseException $e) { return false; } return true 

использовать это решение

 catch (\Exception $e) { return false; } return true 

чтобы поймать все возможные исключения, брошенные Гузллом.

Если вы явно хотите поймать исключение BadResponseException, вы также можете добавить пространство имен класса исключений с помощью '\' .

 catch (\Guzzle\Http\Exception\BadResponseException $e) { return false; } return true