× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Ví dụ về PHP Try Catch: Hướng dẫn xử lý lỗi và ngoại lệ

07/11/2022 01:24

Lỗi là một kết quả chương trình không mong muốn mà chương trình không thể tự xử lý được. Các lỗi được giải quyết bằng cách sửa chữ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. Tìm hiểu thêm về lỗi trong PHP ngay sau đây

Ngoại lệ là gì?

Lỗi là một kết quả chương trình không mong muốn mà chương trình không thể tự xử lý được.

Các lỗi được giải quyết bằng cách sửa chữ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.

Ví dụ về ngoại lệ bao gồm cố gắng 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.

ại sao phải 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 của các ứ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 các ứng dụng của chúng tôi
  • Php Exceptions được sử dụng để thay đổi quy trình bình thường của một chương trình nếu xảy ra bất kỳ lỗi nào có thể dự đoán được.

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âu lệnh Die - hàm die kết hợp hàm echo và exit trong một. Nó rất hữu ích khi chúng ta muốn xuất một thông báo và dừng việc 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à những chức năng do người dùng xác định được gọi bất cứ khi nào có lỗi xảy ra.
  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 điều gì đã 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ụ về 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 các 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.

<?php
$denominator = 0;
echo 2 / $denominator;
?>

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 kết quả sau:

Như bạn có thể thấy từ kết quả trên, nó làm cho ứng dụng của chúng ta trông không chuyên nghiệp và có thể gây khó chịu cho người dùng.

Chúng ta sẽ sửa đổi đoạn mã trên và viết trình xử lý lỗi cho ứng dụng:

<?php
$denominator = 0;
if ($denominator != 0) {
    echo 2 / $denominator;
} else {
    echo "cannot divide by zero (0)";
}
?>

 

Sự khác biệt giữa Lỗi và Ngoại lệ

  • Các trường hợp ngoại lệ được ném ra và dự định sẽ bị bắt trong khi lỗi thường không thể khôi phục được.
  • Các ngoại lệ được xử lý theo hướng đối tượng, nghĩa là khi một ngoại lệ được ném ra; một đối tượng ngoại lệ được tạo có chứa các chi tiết ngoại lệ.

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

Phương pháp Sự mô tả Thí dụ
getMessage () Hiển thị thông báo của ngoại lệ
<? php 
echo $ e-> getMessage (); 
?>
nhận được mã() Hiển thị mã số đại diện cho ngoại lệ
<? php 
echo $ e-> getCode (); 
?>
có được file() Hiển thị tên tệp và đường dẫn nơi xảy ra ngoại lệ
<? php 
echo $ e-> getFile (); 
?>
theo hàng() Hiển thị số dòng nơi xảy ra ngoại lệ
<? php 
echo $ e-> getLine (); 
?>
getTrace () Hiển thị một mảng backtrace trước ngoại lệ
<? php 
print_r ($ e-> getTrace ()); 
?>
getPrevious () Hiển thị ngoại lệ trước đó trước ngoại lệ hiện tại
<? php 
echo $ e-> getPrevious (); 
?>
getTraceAsString () Hiển thị dấu vết của ngoại lệ dưới dạng một chuỗi thay vì một mảng
<? php 
echo $ e-> getTraceAsString (); 
?>
__toString () Hiển thị toàn bộ ngoại lệ dưới dạng một chuỗi
<? php 
echo $ e -> __ toString (); 
?>