Bạn có hai cách để xử lý các trường hợp ngoại lệ và hiển thị một phản ứng tùy chỉnh:
1) Hãy để khuôn khổ xử lý chúng cho bạn:
Nếu bạn không xử lý trường hợp ngoại lệ bởi chính mình, Laravel sẽ xử lý chúng trong lớp:
App\Exceptions\Handler
Trong phương pháp render
bạn có thể đánh chặn các renderning của tất cả các trường hợp ngoại lệ khuôn khổ tăng. Vì vậy, nếu bạn muốn làm một cái gì đó đặc biệt là khi một ngoại lệ cụ thể tăng lên, bạn có thể thay đổi phương pháp mà theo cách này:
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) Xử lý các trường hợp ngoại lệ bởi bản thân:
Bạn có thể tự xử lý các ngoại lệ, với các khối try-catch
. Ví dụ trong phương pháp của một bộ điều khiển:
try
{
//code that will raise exceptions
}
//catch specific exception....
catch(QueryException $e)
{
//...and do whatever you want
return response()->view('my.error.view', [], 500);
}
Sự khác biệt chính giữa hai trường hợp là trong trường hợp 1 bạn đang xác định một chung, ứng dụng rộng cách tiếp cận để xử lý ngoại lệ cụ thể.
Mặt khác, trong trường hợp 2, bạn có thể xác định ngoại lệ hadling trong điểm cụ thể của ứng dụng của bạn
cảm ơn đến tất cả tôi đã cố gắng cả hai trường hợp mà vẫn có Oooops trang tôi chắc chắn rằng tôi đã bỏ lỡ một số điều –
cố gắng đặt câu lệnh 'die ('catched');' bên trong khối catch để xem liệu ngoại lệ có được mã lệnh bắt đúng hay không. Nếu không, mã có ném ngoại lệ bên trong khối thử không? – Moppo