В моем приложении Laravel 5.6 использование throw $e
, по-видимому, выводит исключение непосредственно на экран и обходит Handler.php обработчик исключений.Это означает, что в процессе разработки исключение не показывается при выполнении whoops, а в производственной среде исключение не сообщается.
Когда я пишу это, я понимаю, что, возможно, неправильно использовал try / catches, но, возможно, кто-то может это подтвердить?
Мой текущий код:
try{
$stockLocation = StockLocation::findOrFail($request->location_id);
} catch (\Exception $e){
if($e instanceof ModelNotFoundException){
throw new UserNotifyException('This stock location could not be found on the system', 404);
}
throw $e;
}
Я намеревался перебросить любое исключение, которое не является «моделью не найден», и я ожидал, что оно будет обработано точно так же, какесли уловка попытки вообще не было?
Теперь я понимаю, что, наверное, я должен был написать выше:
try{
$stockLocation = StockLocation::findOrFail($request->location_id);
} catch (ModelNotFoundException $e){
throw new UserNotifyException('This stock location could not be found on the system', 404);
}
В дополнение к этому, есть ли лучший способ обработки исключений, которыеЯ не какой, чтобы войти?В настоящее время я преобразовываю исключение в свой собственный класс исключений (UserNotifyException), а затем в Handler.php я гарантирую, что об этом не сообщается.