Xử lý lỗi là quá trình bắt lỗi do chương trình của bạn đưa ra và sau đó thực hiện hành động thích hợp. Nếu xử lý sai sót không đúng cách có thể dẫn đến nhiều hệ lụy không lường trước được
Rất đơn giản trong PHP để xử lý lỗi
Sử dụng hàm die[]
Trong khi viết chương trình PHP của bạn, bạn nên kiểm tra tất cả các tình trạng lỗi có thể xảy ra trước khi tiếp tục và thực hiện hành động thích hợp khi được yêu cầu
Hãy thử ví dụ sau mà không cần /tmp/test. xt và với tệp này
Bằng cách này bạn có thể viết một mã hiệu quả. Sử dụng kỹ thuật trên, bạn có thể dừng chương trình của mình bất cứ khi nào nó bị lỗi và hiển thị thông báo thân thiện với người dùng và có ý nghĩa hơn
Xác định chức năng xử lý lỗi tùy chỉnh
Bạn có thể viết chức năng của riêng mình để xử lý bất kỳ lỗi nào. PHP cung cấp cho bạn một khung để xác định chức năng xử lý lỗi
Hàm này phải có khả năng xử lý tối thiểu hai tham số [mức lỗi và thông báo lỗi] nhưng có thể chấp nhận tối đa năm tham số [tùy chọn. tệp, số dòng và bối cảnh lỗi] −
cú pháp
error_function[error_level,error_message, error_file,error_line,error_context];Sr. NoThông số & Mô tả1
error_level
Bắt buộc - Chỉ định mức báo cáo lỗi cho lỗi do người dùng xác định. Phải là một số giá trị
2thông báo lỗi
Bắt buộc - Chỉ định thông báo lỗi cho lỗi do người dùng xác định
3error_file
Tùy chọn - Chỉ định tên tệp xảy ra lỗi
4error_line
Tùy chọn - Chỉ định số dòng xảy ra lỗi
5error_context
Tùy chọn - Chỉ định một mảng chứa mọi biến và giá trị của chúng được sử dụng khi xảy ra lỗi
Các mức lỗi có thể xảy ra
Các mức báo cáo lỗi này là các loại lỗi khác nhau mà trình xử lý lỗi do người dùng xác định có thể được sử dụng cho. Các giá trị này cab được sử dụng kết hợp bằng cách sử dụng. nhà điều hành
Sr. NoConstant & DescriptionValue1E_ERROR
Lỗi thời gian chạy nghiêm trọng. Việc thực thi tập lệnh bị tạm dừng
12E_WARNING
Lỗi thời gian chạy không nghiêm trọng. Việc thực thi tập lệnh không bị dừng
23E_PARSE
Lỗi phân tích thời gian biên dịch. Lỗi phân tích cú pháp chỉ nên được tạo bởi trình phân tích cú pháp
44E_NOTICE
Thông báo thời gian chạy. Tập lệnh đã tìm thấy thứ gì đó có thể là lỗi nhưng cũng có thể xảy ra khi chạy tập lệnh bình thường
85E_CORE_ERROR
Các lỗi nghiêm trọng xảy ra trong quá trình khởi động ban đầu của PHP
166E_CORE_WARNING
Lỗi thời gian chạy không nghiêm trọng. Điều này xảy ra trong quá trình khởi động ban đầu của PHP
327E_USER_ERROR
Lỗi nghiêm trọng do người dùng tạo. Đây giống như một E_ERROR do lập trình viên đặt bằng hàm trigger_error[] của PHP
E_USER_WARNING
Cảnh báo không gây tử vong do người dùng tạo. Đây giống như một E_WARNING do lập trình viên đặt bằng hàm trigger_error[] của PHP
5129E_USER_NOTICE
Thông báo do người dùng tạo. Đây giống như một E_NOTICE do lập trình viên đặt bằng hàm trigger_error[] của PHP
102410E_STRICT
Thông báo thời gian chạy. Cho phép PHP đề xuất các thay đổi đối với mã của bạn, điều này sẽ đảm bảo khả năng tương tác tốt nhất và khả năng tương thích về phía trước của mã của bạn
204811E_RECOVERABLE_ERROR
Lỗi nghiêm trọng có thể bắt được. Điều này giống như E_ERROR nhưng có thể bị xử lý bởi người dùng do người dùng xác định [xem thêm set_error_handler[]]
409612E_ALL
Tất cả các lỗi và cảnh báo, ngoại trừ mức E_STRICT [E_STRICT sẽ là một phần của E_ALL kể từ PHP 6. 0]
8191Tất cả các mức lỗi trên có thể được đặt bằng hàm thư viện tích hợp PHP sau trong đó mức cab là bất kỳ giá trị nào được xác định trong bảng trên
int error_reporting [ [int $level] ]
Sau đây là cách bạn có thể tạo một hàm xử lý lỗi -
Error: [$errno] $errstr - $error_file:$error_line"; echo "
"; echo "Terminating PHP Script"; die[]; } ?>
Khi bạn xác định trình xử lý lỗi tùy chỉnh của mình, bạn cần đặt nó bằng cách sử dụng hàm set_error_handler trong thư viện PHP tích hợp. Bây giờ hãy kiểm tra ví dụ của chúng ta bằng cách gọi một hàm không tồn tại
Error: [$errno] $errstr - $error_file:$error_line"; echo "
"; echo "Terminating PHP Script"; die[]; } //set error handler set_error_handler["handleError"]; //trigger error myFunction[]; ?>
Xử lý ngoại lệ
PHP 5 có một mô hình ngoại lệ tương tự như mô hình của các ngôn ngữ lập trình khác. Các ngoại lệ rất quan trọng và cung cấp khả năng kiểm soát tốt hơn đối với việc xử lý lỗi
Hãy giải thích có từ khóa mới liên quan đến ngoại lệ
Try - Một hàm sử dụng ngoại lệ phải nằm trong khối "thử". Nếu ngoại lệ không kích hoạt, mã sẽ tiếp tục như bình thường. Tuy nhiên, nếu ngoại lệ kích hoạt, một ngoại lệ sẽ bị "ném"
Ném - Đây là cách bạn kích hoạt một ngoại lệ. Mỗi lần "ném" phải có ít nhất một lần "bắt"
Catch - Một khối "catch" truy xuất một ngoại lệ và tạo một đối tượng chứa thông tin ngoại lệ
Khi một ngoại lệ được đưa ra, mã theo sau câu lệnh sẽ không được thực thi và PHP sẽ cố gắng tìm khối bắt khớp đầu tiên. Nếu một ngoại lệ không bị bắt, Lỗi nghiêm trọng PHP sẽ được đưa ra với thông báo "Ngoại lệ chưa được bắt
Một ngoại lệ có thể được ném và bị bắt ["bắt"] trong PHP. Mã có thể được bao quanh trong một khối thử
Mỗi lần thử phải có ít nhất một khối bắt tương ứng. Nhiều khối bắt có thể được sử dụng để bắt các loại ngoại lệ khác nhau
Các ngoại lệ có thể được ném [hoặc ném lại] trong một khối bắt
Thí dụ
Sau đây là đoạn mã, sao chép và dán mã này vào một tệp và xác minh kết quả
getMessage[], "\n"; } // Continue execution echo 'Hello World'; ?>
Trong ví dụ trên, hàm $e->getMessage được sử dụng để nhận thông báo lỗi. Có các hàm sau có thể được sử dụng từ lớp Ngoại lệ
getMessage[] - thông báo ngoại lệ
getCode[] - mã ngoại lệ
getFile[] − tên tệp nguồn
getLine[] − dòng nguồn
getTrace[] − n mảng của backtrace[]
getTraceAsString[] − chuỗi theo dõi được định dạng
Tạo Trình xử lý ngoại lệ tùy chỉnh
Bạn có thể xác định trình xử lý ngoại lệ tùy chỉnh của riêng mình. Sử dụng chức năng sau để đặt chức năng xử lý ngoại lệ do người dùng xác định
string set_exception_handler [ callback $exception_handler ]
Ở đây Exception_handler là tên của hàm được gọi khi xảy ra ngoại lệ chưa được phát hiện. Chức năng này phải được xác định trước khi gọi set_Exception_handler[]