Laravel Exception: Xử lí ngoại lệ (Phần 1)
1. Giới thiệu
Chúng ta thường chưa quan tâm đầy đủ về vấn đề lỗi. Khi phát sinh lỗi, chương trình thường chỉ trả ra mặc định kiểu "Whoops, something went wrong" hay thậm chí trả về exception. Điều này không hữu ích đối với người dùng cơ bản, khiến việc trải nghiệm trang web thật tệ.
Vì thế, bài viết này mình xin cung cấp thông tin và trình bày về ví dụ về một bài toán cụ thể về cách xử lí ngoại lệ (Laravel Exception: Handle, Catch).
2. Bài toán tìm kiếm user
- Chuẩn bị
Bài toán tìm kiếm user cho phép nhập vào ID và trả về thông tin của user đó.
Khi tìm thấy user, màn hình sẽ trả về thông tin của user đó. Nếu ID không hợp lệ, hoặc không có user nào có ID như vậy.
2. Xử lí ngoại lệ
Khi không có user sẽ xuất hiện lỗi
Trying to get property of non-object
Tất nhiên chúng ta có thể set APP_DEBUG=false
và trình duyệt chỉ xuất hiện thông báo lỗi "Some thing went wrong".
Với hàm findOrFail()
trong trường hợp không tìm thấy user sẽ trả về một ModelNotFoundException
, do đó chúng ta cần phải bắt lỗi
Khi đó màn hình nhận được là
Tuy nhiên, không nên để người dùng thấy những message như trên. Nên chúng ta sẽ custom lại chúng như sau
3. Tổng kết
Như vậy chúng ta đã đi qua cơ bản về cách xử lí ngoại lệ. Trong phần tiếp theo, mình sẽ giới thiệu với mọi người cách đưa chúng vào trong Service sử dụng Dependency Injection và tạo Exception Class riêng của mình.