Masz dwa sposoby obsługi wyjątków i pokazać odpowiedź niestandardowe:
1) Niech ramy obsługiwać je dla Ciebie:
Jeśli nie obsługiwać Wyjątki od siebie, laravel będzie obsługiwać je w klasie:
App\Exceptions\Handler
W metodzie render
można przechwycić renderning wszystkich wyjątków ramy wzrasta. Tak więc, jeśli chcesz coś zrobić, zwłaszcza gdy specyficzny wyjątek wzrasta, można zmodyfikować tej metody w ten sposób:
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) Uchwyt wyjątki od siebie:
Można obsługiwać wyjątki samemu, korzystając z bloków try-catch
. Na przykład w metodzie kontrolera za:
try
{
//code that will raise exceptions
}
//catch specific exception....
catch(QueryException $e)
{
//...and do whatever you want
return response()->view('my.error.view', [], 500);
}
Główną różnicą między tymi dwoma przypadkami jest to, że w przypadku 1 definiujesz ogólne, aplikacji szeroki podejście obsługiwać konkretne wyjątki.
Z drugiej strony, w przypadek 2 można zdefiniować wyjątek hadling w określonych punktach z aplikacji
dziękujemy wszystkim próbowałem oba przypadki i jeszcze Oooops stronę jestem pewien, że brakowało trochę rzeczy –
spróbuj umieścić instrukcję 'die ('catched');' wewnątrz bloku catch, aby sprawdzić, czy wyjątek jest prawidłowo przechwycony przez kod. Jeśli nie, to czy kod rzuca wyjątek wewnątrz bloku try? – Moppo