PHP xử lý ngoại lệ như thế nào?

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ệp

Trong hướng dẫn này, bạn sẽ học-

  • Tại sao xử lý ngoại lệ?
  • Xử lý lỗi PHP
  • Ví dụ xử lý lỗi
  • Sự khác biệt giữa Lỗi và Ngoại lệ
  • Nhiều ngoại lệ
  • Kiểm tra mã

Tạ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;

  1. 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
  2. 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 bất cứ khi nào xảy ra lỗi
  3. 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, mở URL http. //localhost/phptuts/simple_error. php

Bạn sẽ nhận được kết quả sau

PHP xử lý ngoại lệ như thế nào?

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 ta sẽ sửa đoạn mã trên và viết trình xử lý lỗi cho ứng dụng

Giả sử bạn đã lưu đoạn mã trên dưới dạng error_handling. php, hãy mở URL http. //localhost/phptuts/error_handling. php

PHP xử lý ngoại lệ như thế nào?

Ghi chú. Đó 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

Trình xử lý lỗi tùy chỉnh sẽ được đặt làm hàm xử lý lỗi PHP mặc định và về cơ bản sẽ hiển thị số lỗi và thông báo

Đoạn mã dưới đây minh họa việc thực hiện ví dụ trên

Mở địa chỉ http. // localhost/php tuts/tùy chỉnh _error_handler. php bạn sẽ nhận được kết quả như sau

.

PHP xử lý ngoại lệ như thế nào?


Như bạn có thể thấy từ ví dụ trên, trình xử lý lỗi tùy chỉnh rất mạnh theo nghĩa là
  • 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.

Bây giờ hãy xem xét loại xử lý lỗi thứ ba. Chúng ta sẽ sử dụng hàm error_reporting được tích hợp sẵn trong PHP. Nó có cú pháp cơ bản sau

NƠI ĐÂY,

  • “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
Cấp báo cáo Mô tảVí dụE_WARNINGChỉ hiển thị thông báo cảnh báo. Không tạm dừng việc thực thi scripterror_reporting(E_WARNING);E_NOTICEHiển thị các thông báo có thể xảy ra trong quá trình thực thi chương trình bình thường hoặc có thể là lỗi. error_reporting(E_ NOTICE);E_USER_ERRORHiển thị lỗi do người dùng tạo i. e. trình xử lý lỗi tùy chỉnherror_reporting(E_ USER_ERROR);E_USER_WARNINGHiển thị thông báo cảnh báo do người dùng tạoerror_reporting(E_USER_WARNING);E_USER_NOTICEHiển thị thông báo do người dùng tạoerror_reporting(E_USER_NOTICE);E_RECOVERABLE_ERRORHiển thị lỗi không nghiêm trọng và có thể được xử lý bằng cách sử dụng trình xử lý lỗi tùy chỉnherror_reporting(E_RECOVERABLE_ERRORs;lỗi E_RECOVERABLE_ERROR và cảnh báoE_ALL_Eporting);

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;

Bảng bên dưới hiển thị các phương thức đối tượng ngoại lệ

MethodDescriptionExamplegetMessage() Hiển thị thông báo của ngoại lệ
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 mảng của dấu vết ngược trước ngoại lệ
getTrace());
?>
getPrevious


Dưới đây là cú pháp cơ bản để ném một ngoại lệ.
2

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

Đoạn mã trên xuất ra thông báo sau

PHP xử lý ngoại lệ như thế nào?

Bây giờ chúng ta sẽ xem xét một ví dụ triển khai các ngoại lệ ném và bắt

Chúng tôi sẽ sửa đổi ví dụ trên và bao gồm thử, ném và bắt

Nó có cú pháp cơ bản sau

3

NƠI ĐÂY,

  • “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

Mã bên dưới hiển thị ví dụ ngoại lệ cơ bản với ngoại lệ thử, ném và bắt được triển khai

Chương trình cố tình đưa ra một ngoại lệ mà sau đó nó sẽ bắt được

4

Mở địa chỉ http. //localhost/phptuts/Exception_handling. php Bạn sẽ nhận được kết quả như sau

PHP xử lý ngoại lệ như thế nào?

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;

Ngoại lệ trong PHP là gì?

Một ngoại lệ là đối tượng mô tả lỗi hoặc hành vi không mong muốn của tập lệnh PHP . Các ngoại lệ được đưa ra bởi nhiều hàm và lớp PHP. Các hàm và lớp do người dùng định nghĩa cũng có thể đưa ra các ngoại lệ. Ngoại lệ là một cách hay để dừng một chức năng khi gặp dữ liệu mà nó không thể sử dụng.

Các từ khóa được sử dụng để xử lý các ngoại lệ trong PHP là gì?

PHP xử lý lỗi từ khóa . Từ khóa throw được sử dụng để báo hiệu sự xuất hiện của một ngoại lệ PHP. Sau đó, bộ thực thi PHP sẽ cố gắng tìm một câu lệnh bắt để xử lý ngoại lệ. Chụp lấy. Khối mã này sẽ chỉ được gọi nếu có ngoại lệ xảy ra trong khối mã thử. Throw: The throw keyword is used to signal the occurrence of a PHP exception. The PHP runtime will then try to find a catch statement to handle the exception. Catch: This block of code will be called only if an exception occurs within the try code block.

Chúng ta có thể bắt lỗi nghiêm trọng trong PHP không?

Trong PHP 7, các lỗi nghiêm trọng hiện là ngoại lệ và chúng tôi có thể xử lý chúng rất dễ dàng . Lỗi nghiêm trọng dẫn đến một ngoại lệ lỗi bị ném. Bạn cần xử lý các lỗi không nghiêm trọng bằng chức năng xử lý lỗi. Đây là một ví dụ bắt lỗi nghiêm trọng trong PHP 7. 1.

Trong phiên bản nào xử lý ngoại lệ được giới thiệu trong PHP?

Giải thích. Xử lý ngoại lệ đã được thêm vào PHP với bản phát hành phiên bản 5 và được nâng cao hơn nữa với phiên bản 5. 3.