Hello guys,
1 little talk thoy nhé, cụ thể là PHP.
Bạn làm gì cũng vậy, có nhiều cái khi lên production, end-users xài nó có thể lead ra 1 lỗi => Exception. Try catch là điều cần thiết, tối thiểu nhất là nó sẽ ko fire error 500 về end-users.
Bắt đầu nào.
PHP 5
Bạn an toàn, vì Exception class là nguồn gốc của mọi extended Exception classes khác.
(2021 rồi, xài PHP5 là 1 tội ác với cái application của bạn)
PHP7 trở lên
Bạn không an toàn chút nào, vì PHP7 introduced 1 cái gọi là Error (cái mà ta hay thấy nhất nếu mismatch kiểu dữ liệu => TypeError sẽ dc throw)
Về bản chất, nó y hệt Exception, dùng để throw ra lỗi. Nhưng, Error
không phải là 1 Exception => bạn mà chơi kiểu này:
Thì nếu gặp TypeError
thì nó sẽ ko catch lại => 500
Exception và Error có gì giống nhau?
Rất đơn giản, cả 2 đều implements Throwable
interface, 1 interface mới dc thêm vào PHP7
Vậy nên, để sure kèo là mọi Exceptions & Errors ko rõ nguồn gốc dc catch lại, thì ta sẽ làm như sau:
Note: với Laravel application, bạn nên thêm 1 dòng đơn giản này nữa: report($exception);
để lỗi này dc log lại (local logs hoặc 1 external service – ví dụ như Sentry). Chắc hẳn bạn không muốn fải sửa 1 lỗi customers report nhưng ko biết rõ nguồn gốc nhỉ?
Finally
Thanks for reading, guys!! Happy weekend!!