Как правильно обрабатывать исключения внутри контроллера? - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь загрузить файл. И если он выдает исключение, я не хочу видеть страницу "whoops". Вместо этого он вернется на предыдущую страницу с сообщением. Это то, что я пытался сделать,

try {
    $data = Excel::toArray(new Import, request('file'));
} catch (\Exception $e) {
    return back()->withErrors("an exception occured");
}

Но он все равно дает мне страницу с жалобами, когда возникает какое-либо исключение.

Как решить это?

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Laravel 5.0 и выше поставляется с обработчиком ошибок в app/Exceptions/Handler.php. Здесь вы можете определить обработчик для любого исключения в вашем приложении. Таким образом, вам не нужно добавлять дополнительную обработку ошибок в ваши контроллеры.

Всю информацию можно найти в документации: https://laravel.com/docs/6.x/errors#the-exception-handler

0 голосов
/ 25 октября 2019

Я не верю, что вы сможете поймать / обработать фатальную ошибку. Сценарий остановлен и на данный момент не подлежит восстановлению. Обработчик завершения работы работает, так как сценарий завершает работу. Это обрабатывается функцией выключения через register_shutdown_function.

Illuminate\Foundation\Bootstrap\HandleExceptions@handleShutdown, чтобы проверить, была ли ошибка и была ли она фатальной, а затем передать Symfony\Component\Debug\Exception\FatalErrorException своему собственному обработчику в качестве примера. .

...