Ngoại lệ là gì?
Lỗi là kết quả chương trình không mong muốn mà chính chương trình không thể xử lý được. Lỗi được giải quyết bằng cách sửa chương trình. Một ví dụ về lỗi sẽ là một vòng lặp vô hạn không bao giờ ngừng thực thi. Một ngoại lệ là kết quả chương trình không mong muốn có thể được xử lý bởi chính chương trình. Các ví dụ về ngoại lệ bao gồm việc cố mở một tệp không tồn tại. Ngoại lệ này có thể được xử lý bằng cách tạo tệp hoặc hiển thị cho người dùng tùy chọn tìm kiếm tệpTại sao xử lý ngoại lệ?
- Tránh các kết quả không mong muốn trên các trang của chúng tôi có thể gây khó chịu hoặc khó chịu cho người dùng cuối của chúng tôi
- Cải thiện tính bảo mật cho ứng dụng của chúng tôi bằng cách không tiết lộ thông tin mà người dùng độc hại có thể sử dụng để tấn công ứng dụng của chúng tôi
- Ngoại lệ Php được sử dụng để thay đổi luồng bình thường của chương trình nếu xảy ra bất kỳ lỗi có thể dự đoán nào
Xử lý lỗi PHP
Khi xảy ra lỗi, tùy thuộc vào cài đặt cấu hình của bạn, PHP sẽ hiển thị thông báo lỗi trong trình duyệt web với thông tin liên quan đến lỗi xảy ra. PHP cung cấp một số cách để xử lý lỗi. Chúng ta sẽ xem xét ba [3] phương pháp thường được sử dụng;- Các câu lệnh die– chức năng die kết hợp chức năng echo và exit trong một. Nó rất hữu ích khi chúng ta muốn xuất thông báo và dừng thực thi tập lệnh khi xảy ra lỗi
- Trình xử lý lỗi tùy chỉnh – đây là các hàm do người dùng xác định được gọi mỗi khi xảy ra lỗi
- Báo cáo lỗi PHP – thông báo lỗi tùy thuộc vào cài đặt báo cáo lỗi PHP của bạn. Phương pháp này rất hữu ích trong môi trường phát triển khi bạn không biết nguyên nhân gây ra lỗi. Thông tin được hiển thị có thể giúp bạn gỡ lỗi ứng dụng của mình
Ví dụ xử lý lỗi
Bây giờ chúng ta hãy xem xét một số ví dụ đơn giản với quy trình xử lý lỗi. Giả sử rằng chúng tôi đã phát triển một ứng dụng sử dụng tệp văn bản để lưu trữ dữ liệu. Chúng tôi có thể muốn kiểm tra sự tồn tại của tệp trước khi chúng tôi cố gắng đọc dữ liệu từ nó. Đoạn mã dưới đây thực hiện ví dụ trên. Giả sử bạn đã lưu tệp simple_error. php trong thư mục phptuts, hãy mở URL http. //localhost/phptuts/simple_error. php Bạn sẽ nhận được các kết quả sau Như bạn có thể thấy từ các kết quả trên, nó làm cho ứng dụng của chúng ta trông thiếu chuyên nghiệp và có thể gây khó chịu cho người dùng. Chúng tôi sẽ sửa đổi mã trên và viết trình xử lý lỗi cho ứng dụngGiả sử bạn đã lưu mã ở trên dưới dạng error_handling. php, hãy mở URL http. //localhost/phptuts/error_handling. php Lưu ý. Đó là một phương pháp bảo mật tốt để hiển thị thông báo như thông báo được hiển thị ở trên thay vì hiển thị thông báo như "Không tìm thấy tệp"Hãy xem một ví dụ khác sử dụng trình xử lý lỗi tùy chỉnh
- Chúng cho phép chúng tôi tùy chỉnh các thông báo lỗi
- Trình xử lý lỗi tùy chỉnh cũng có thể bao gồm ghi lỗi vào tệp/cơ sở dữ liệu, gửi email cho nhà phát triển, v.v.
- “error_reporting” là hàm báo lỗi PHP
- “$reporting_level" là tùy chọn, có thể được sử dụng để đặt mức báo cáo. Nếu không có mức báo cáo nào được chỉ định, PHP sẽ sử dụng mức báo cáo lỗi mặc định như được chỉ định trong tệp php. tập tin ini
Sự khác biệt giữa Lỗi và Ngoại lệ
- Các ngoại lệ được ném ra và có ý định bị bắt trong khi các lỗi thường không thể phục hồi được
- Các ngoại lệ được xử lý theo cách hướng đối tượng. Điều này có nghĩa là khi một ngoại lệ được ném ra;
getMessage[]; ?>getCode[]Hiển thị mã số đại diện cho ngoại lệ
getCode[]; ?>getFile[]Hiển thị tên tệp và đường dẫn nơi xảy ra ngoại lệ
getFile[]; ?>getLine[]Hiển thị số dòng nơi xảy ra ngoại lệ
getLine[]; ?>getTrace[]Hiển thị một . NƠI ĐÂY,
- "throw" là từ khóa được sử dụng để ném ngoại lệ
- “Ngoại lệ mới […]” tạo một đối tượng ngoại lệ và chuyển chuỗi “Đây là một ví dụ ngoại lệ” làm tham số thông báo
- “try{…}” là khối mã được thực thi có khả năng gây ra ngoại lệ
- “catch[Exception $e]{…}” là khối mã bắt ngoại lệ được ném ra và gán đối tượng ngoại lệ cho biến $e
getMessage[]; echo ""; echo "getCode[]: " . $e->getCode[]; echo ""; echo "__toString[]: " . $e->__toString[]; } ?>Mở URL http. //localhost/phptuts/Exception_handling. php Bạn sẽ nhận được kết quả như sau. Cũng có thể tạo nhiều ngoại lệ cho một câu lệnh thử php tùy thuộc vào loại ngoại lệ được ném. Xem bài viết về truy cập dữ liệu MySQL, PHP… để biết các ví dụ triển khai của nhiều ngoại lệ
Nhiều ngoại lệ
Nhiều ngoại lệ sử dụng nhiều khối thử bắt để xử lý các ngoại lệ đã ném. Nhiều ngoại lệ hữu ích khi;- Bạn muốn hiển thị một thông báo tùy chỉnh tùy thuộc vào ngoại lệ được ném
- Bạn muốn thực hiện một thao tác duy nhất tùy thuộc vào ngoại lệ được ném
Chúng tôi sẽ sửa đổi mã chia một số cho mẫu số được truyền vào
Chúng tôi mong đợi hai loại ngoại lệ xảy ra;- Chia cho số không
- Chia cho một số âm
Kiểm tra mã
Chúng tôi sẽ cho rằng bạn đã lưu nhiều_ngoại lệ. php trong thư mục phptuts. Duyệt đến URL http. //localhost/phptuts/multiple_exceptions. php Quay lại tệp PHP và chuyển -1 làm tham số như trong sơ đồ sau. Duyệt đến URL http. //localhost/phptuts/multiple_exceptions. php. Bạn nhận được kết quả gì? . Bạn nhận được kết quả gì?Bản tóm tắt
- Lỗi là kết quả không mong muốn do mã PHP tạo ra
- Xử lý lỗi cải thiện hiệu suất ứng dụng
- PHP đã tích hợp sẵn các hàm có thể được sử dụng để tùy chỉnh cách PHP báo cáo lỗi
- Ngoại lệ giống như lỗi, nhưng chúng có thể bị bắt bằng cách sử dụng khối bắt khi ném
- Hiển thị thông báo lỗi hiển thị thông tin lỗi được coi là một biện pháp bảo mật không tốt