Hướng dẫn PHP

TRANG CHỦ PHP Giới thiệu PHP Cài đặt PHP Cú pháp PHP Nhận xét PHP Các biến PHP PHP Echo / Print Các kiểu dữ liệu PHP Chuỗi PHP Số PHP Toán PHP Hằng số PHP Toán tử PHP PHP If ... Else ... Elseif Chuyển đổi PHP Vòng lặp PHP Các hàm PHP Mảng PHP PHP Superglobals PHP RegEx

Biểu mẫu PHP

Xử lý biểu mẫu PHP Xác thực biểu mẫu PHP Yêu cầu biểu mẫu PHP URL biểu mẫu PHP / E-mail Hoàn thành biểu mẫu PHP

PHP nâng cao

Ngày và giờ trong PHP Bao gồm PHP Xử lý tệp PHP Mở / Đọc tệp PHP Tạo / ghi tệp PHP Tải lên tệp PHP Cookie PHP Phiên PHP Bộ lọc PHP Bộ lọc PHP nâng cao Các chức năng gọi lại trong PHP PHP JSON Ngoại lệ PHP

PHP OOP

PHP OOP là gì Các lớp / đối tượng PHP Trình tạo PHP PHP Destructor Công cụ sửa đổi quyền truy cập PHP Kế thừa PHP Hằng số PHP Các lớp trừu tượng trong PHP Giao diện PHP Đặc điểm PHP Phương thức tĩnh trong PHP Thuộc tính tĩnh của PHP Không gian tên PHP Lặp lại PHP

Cơ sở dữ liệu MySQL

Cơ sở dữ liệu MySQL MySQL Connect MySQL Tạo cơ sở dữ liệu MySQL Tạo bảng MySQL Chèn dữ liệu MySQL Nhận ID cuối cùng MySQL Chèn Nhiều MySQL được chuẩn bị Dữ liệu chọn MySQL MySQL ở đâu MySQL Đặt hàng bởi MySQL Xóa dữ liệu Dữ liệu cập nhật MySQL Dữ liệu giới hạn MySQL

PHP XML

Trình phân tích cú pháp XML PHP Trình phân tích cú pháp PHP SimpleXML PHP SimpleXML - Nhận PHP XML Expat DOM XML PHP

PHP - AJAX

Giới thiệu về AJAX AJAX PHP Cơ sở dữ liệu AJAX AJAX XML Tìm kiếm trực tiếp AJAX Cuộc thăm dò ý kiến ​​của AJAX

Ví dụ về PHP

Ví dụ về PHP Trình biên dịch PHP PHP Quiz Bài tập PHP Chứng chỉ PHP

Tham chiếu PHP

Tổng quan về PHP Mảng PHP Lịch PHP Ngày PHP Thư mục PHP Lỗi PHP Ngoại lệ PHP Hệ thống tập tin PHP Bộ lọc PHP FTP PHP PHP JSON Từ khóa PHP PHP Libxml Thư PHP Toán PHP PHP Misc PHP MySQLi Mạng PHP Kiểm soát đầu ra PHP PHP RegEx PHP SimpleXML Luồng PHP Chuỗi PHP Xử lý biến PHP Trình phân tích cú pháp XML PHP PHP Zip Múi giờ PHP

Ngoại lệ PHP


Ngoại lệ là gì?

Ngoại lệ là một đố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 ném 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 tốt để dừng một hàm khi nó gặp phải dữ liệu mà nó không thể sử dụng.


Ném một Ngoại lệ

Câu throwlệnh cho phép một hàm hoặc phương thức do người dùng định nghĩa ném ra một ngoại lệ. Khi một ngoại lệ được ném ra, mã theo sau nó sẽ không được thực thi.

Nếu một ngoại lệ không được bắt, một lỗi nghiêm trọng sẽ xảy ra với thông báo "Ngoại lệ chưa được giải quyết".

Hãy thử ném một ngoại lệ mà không bắt nó:

Thí dụ

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

echo divide(5, 0);
?>

Kết quả sẽ giống như sau:

Fatal error: Uncaught Exception: Division by zero in C:\webfolder\test.php:4
Stack trace: #0 C:\webfolder\test.php(9):
divide(5, 0) #1 {main} thrown in C:\webfolder\test.php on line 4

Tuyên bố try ... catch

Để tránh lỗi từ ví dụ trên, chúng ta có thể sử dụng try...catchcâu lệnh để bắt các ngoại lệ và tiếp tục quá trình.

Cú pháp

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

Thí dụ

Hiển thị thông báo khi một ngoại lệ được ném ra:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $e) {
  echo "Unable to divide.";
}
?>

Khối catch cho biết loại ngoại lệ nào nên được bắt và tên của biến có thể được sử dụng để truy cập ngoại lệ. Trong ví dụ trên, kiểu ngoại lệ là Exceptionvà tên biến là $e.


Tuyên bố thử ... bắt ... cuối cùng

Câu try...catch...finallylệnh có thể được sử dụng để bắt các ngoại lệ. Mã trong finallykhối sẽ luôn chạy bất kể có bắt được ngoại lệ hay không. Nếu finallycó, catchkhối là tùy chọn.

Cú pháp

try {
  code that can throw exceptions
} catch(Exception $e) {
  code that runs when an exception is caught
} finally {
  code that always runs regardless of whether an exception was caught
}

Thí dụ

Hiển thị thông báo khi một ngoại lệ được đưa ra và sau đó cho biết rằng quá trình đã kết thúc:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $e) {
  echo "Unable to divide. ";
} finally {
  echo "Process complete.";
}
?>

Thí dụ

Xuất một chuỗi ngay cả khi không bắt được ngoại lệ:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero");
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} finally {
  echo "Process complete.";
}
?>

Đối tượng ngoại lệ

Đối tượng Ngoại lệ chứa thông tin về lỗi hoặc hành vi không mong muốn mà hàm gặp phải.

Cú pháp

new Exception(message, code, previous)

Giá trị tham số

Parameter Description
message Optional. A string describing why the exception was thrown
code Optional. An integer that can be used used to easily distinguish this exception from others of the same type
previous Optional. If this exception was thrown in a catch block of another exception, it is recommended to pass that exception into this parameter

Phương pháp

Khi bắt một ngoại lệ, bảng sau hiển thị một số phương pháp có thể được sử dụng để lấy thông tin về ngoại lệ:

Method Description
getMessage() Returns a string describing why the exception was thrown
getPrevious() If this exception was triggered by another one, this method returns the previous exception. If not, then it returns null
getCode() Returns the exception code
getFile() Returns the full path of the file in which the exception was thrown
getLine() Returns the line number of the line of code which threw the exception

Thí dụ

Thông tin đầu ra về một ngoại lệ đã được ném:

<?php
function divide($dividend, $divisor) {
  if($divisor == 0) {
    throw new Exception("Division by zero", 1);
  }
  return $dividend / $divisor;
}

try {
  echo divide(5, 0);
} catch(Exception $ex) {
  $code = $ex->getCode();
  $message = $ex->getMessage();
  $file = $ex->getFile();
  $line = $ex->getLine();
  echo "Exception thrown in $file on line $line: [Code $code]
  $message";
}
?>

Hoàn thành Tham chiếu Ngoại lệ

Để có tài liệu tham khảo đầy đủ, hãy truy cập Tài liệu tham khảo ngoại lệ PHP hoàn chỉnh của chúng tôi .

Tham chiếu chứa các mô tả và ví dụ về tất cả các phương thức Ngoại lệ.