Hướng dẫn dùng fianlly trong PHP

Trong bài này, chúng ta sẽ tìm hiểu về ngoại lệ (exception) trong PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với XAMPP để biết cách chạy ứng dụng web PHP với XAMPP.

Trong PHP, ngoại lệ (exception) là một đối tượng (object) mô tả một lỗi (error) hoặc một vấn đề bất thường của PHP script. Exception có thể được xử lý bằng cách ném (throw)bắt (catch) trong PHP. Nếu một exception xảy ra mà không được xử lý thì sẽ gây ra Fatal Error trong PHP.

Ném (throw) một ngoại lệ (exception) trong PHP

Câu lệnh throw cho phép chúng ta ném ra một exception. Khi một exception được ném ra thì các đoạn code sau nó sẽ không được thực thi. Nếu không bắt exception thì Fatal Error sẽ xảy ra với thông báo “Uncaught Exception“.


Kết quả
Fatal error: Uncaught Exception: Division by zero

2. Xử lý exception với câu lệnh try catch trong PHP

Chúng ta cần phải bắt (catch) các exception có thể xảy ra để tránh lỗi và không bị dừng chương trình. Trong PHP, câu lệnh try…catch giúp chúng ta catch các exception. Cú pháp:

try {
  //code that can throw exceptions
} catch(Exception $e) {
  //code that runs when an exception is caught
}

Ví dụ sử dụng try…catch để bắt exception


Kết quả
Unable to divide.

Câu lệnh try…catch…finally trong PHP

Câu lệnh try...catch...finally cũng có thể được sử dụng để catch các exception. Cú pháp:


Các dòng code trong khối lệnh finally luôn luôn được thực thi mặc dù có xảy ra exception hay không. Nếu có khối lệnh finally thì khối lệnh catch có thể có hoặc không.

Ví dụ sử dụng try…catch…finally để bắt exception

";
} finally {
  echo "Process complete.";
}
?>
Kết quả
Unable to divide.
Process complete.

Khối lệnh catch có thể có hoặc không khi sử dụng finally


Kết quả
Process complete.
Fatal error: Uncaught Exception: Division by zero

Lưu ý: Có thể không sử dụng catch khi có finally. Nhưng nên sử dụng catch để bắt exception để tránh Fatal Error.

3. Đối tượng Exception trong PHP

Những exception được ném ra đều là một object của lớp Exception. Các đối tượng của lớp Exception chứa các thông tin về error xảy ra. Cú pháp tạo một object Exception:

new Exception($message, $code, $previous)

Trong đó,

    • $message: Tham số tùy chọn. Tham số này có kiểu dữ liệu là string, mô tả tại sao exception lại bị ném ra.
    • $code: Tham số tùy chọn. Tham số này có kiểu dữ liệu là integer, dùng để phân biệt các ngoại lệ với nhau.
    • $previous: Tham số tùy chọn. Nếu ngoại lệ này ném ra từ một ngoại lệ khác thì nên truyền ngoại lệ khác đó vào tham số này.

Một số phương thức thường dùng của lớp Exception

Phương thức Chức năng
getMessage() Trả về một string mô tả tại sao exception được ném ra
getPrevious() Nếu ngoại lệ này ném ra từ một ngoại lệ khác thì hàm này sẽ trả về exception khác đó. Nếu không thì trả về null
getCode() Trả về mã (code) là một số integer của exception
getFile() Trả về đường dẫn của file mà exception được ném ra
getLine() Trả về số dòng mà exception được ném ra

Ví dụ sử dụng các phương thức của lớp Exception

getCode();
  $message = $ex->getMessage();
  $file = $ex->getFile();
  $line = $ex->getLine();
  echo "Exception thrown in $file on line $line: [Code $code]
  $message";
}
?>
Kết quả
Exception thrown in C:\xampp\htdocs\gochocit\index.php on line 4: [Code 1] Division by zero

Tham khảo: PHP Exceptions w3schools.com, Exceptions php.net

  • Hàng đợi (queue) là gì? Cách xây dựng hàng đợi
  • Lập trình điều khiển led bằng nút bấm với board mạch Arduino
  • Sử dụng vòng lặp do while và sự khác nhau với while
  • Lớp BufferedReader và BufferedWriter trong Java
  • Lớp FileReader và FileWriter trong Java