php catch exception

PHP: Tôi catch Exception rồi, tôi an toàn chưa?

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!!

facebook
Seth Phát

Seth Phát

Mình là Phát - biệt danh Seth Phát. Hiện đang là một Sr. Full-Stack Engineer. Mình là một người yêu thích và đam mê lập trình và hiện tại đang theo về phần Web là chủ yếu. Mạnh Back-end và khá Front-end, vẫn đang theo đều cả 2 :v. Còn gì bằng khi được làm những thứ mà mình yêu thích, đam mê ;)

Leave a Reply

Your email address will not be published. Required fields are marked *

Bình luận qua Facebook