Intereting Posts
PHP – анализировать данные из ответа SOAP mysql_fetch_array возвращает повторяющиеся данные Чтобы понять заголовок PHP () Получение лака для работы с Magento Только в Firefox "Ошибка загрузки для <script> с исходным кодом" Регулярное выражение регулярного выражения для проверки ввода: два слова с пробелом между Решение для «Неустранимая ошибка: максимальный уровень вложенности функции« 100 »достигнут, прерван!» В PHP Только замените собственный URL веб-сайта в тексте с помощью HTML-ссылок Невозможно повторно назначить автоматически-глобальную переменную _POST предотвратить кнопку возврата после выхода из системы Получить содержимое файла XML с помощью PHP PHP – коммерческий раунд Регулярное выражение для проверки того, являются ли два первых слова одинаковыми Объект класса Database не может быть преобразован в строку XDebug не прерывает точки останова от пакета php-debug от атома

Как обрабатывать исключения и сообщения об ошибках в Laravel 5?

Когда я получу эту ошибку:

QueryException в строке 620 Connection.php: SQLSTATE [23000]: нарушение ограничения целостности: 1062 Дубликат записи

могу ли я обработать его со своим собственным сообщением об ошибке, а не:

Упс, похоже, что-то пошло не так

У вас есть два способа обработки исключений и отображение пользовательского ответа:

1) Пусть структура обрабатывает их для вас:

Если вы не будете обрабатывать исключения самостоятельно, Laravel будет обрабатывать их в классе:

App\Exceptions\Handler 

В методе render вы можете перехватить визуализацию всех исключений, которые создает рамка. Итак, если вы хотите что-то делать, особенно когда возникает конкретное исключение, вы можете изменить этот метод следующим образом:

 public function render($request, Exception $e) { //check the type of the exception you are interested at if ($e instanceof QueryException) { //do wathever you want, for example returining a specific view return response()->view('my.error.view', [], 500); } return parent::render($request, $e); } 

2) Обращайтесь с исключениями самостоятельно:

Вы можете обрабатывать исключения самостоятельно, используя блоки try-catch . Например, в методе контроллера:

 try { //code that will raise exceptions } //catch specific exception.... catch(QueryException $e) { //...and do whatever you want return response()->view('my.error.view', [], 500); } 

Основное различие между этими двумя случаями состоит в том, что в случае 1 вы определяете общий подход на уровне приложения для обработки конкретных исключений.

С другой стороны, в случае 2 вы можете определить исключение в определенных точках вашего приложения

это работа со мной отлично

if ($ e instanceof \ PDOException) {

  $dbCode = trim($e->getCode()); //Codes specific to mysql errors switch ($dbCode) { case 23000: $errorMessage = 'my 2300 error message '; break; default: $errorMessage = 'database invalid'; } return redirect()->back()->with('message',"$errorMessage"); }