Computer >> Máy Tính >  >> Lập trình >> PHP

Ngoại lệ ném PHP

Giới thiệu

Giao diện có thể ném được thực hiện bởi lớp Lỗi và Ngoại lệ. Tất cả các lớp Lỗi được xác định trước đều được kế thừa từ lớp Lỗi. Phiên bản của lớp Lỗi tương ứng được đưa vào bên trong khối try và được xử lý bên trong khối bắt thích hợp.

Lỗi ném

Quá trình thực thi bình thường (khi không có ngoại lệ nào được ném trong khối try) sẽ tiếp tục sau khi khối bắt cuối cùng được xác định theo trình tự.

Ví dụ

<?php
function div($x, $y) {
   if (!$y) {
      throw new Exception('Division by zero.');
   }
return $x/$y;
}
try {
   echo div(10,5) . "\n";
   echo div(10,0) . "\n";
} catch (Exception $e) {
   echo 'Caught exception: ', $e->getMessage(), "\n";
}
// Continue execution
echo "Execution continues\n";
?>

Đầu ra

Kết quả sau được hiển thị

2
Caught exception: Division by zero.
Execution continues

Trong ví dụ sau, TypeError được ném trong khi thực thi một hàm bởi vì các đối số thích hợp không được chuyển cho nó. Thông báo lỗi tương ứng được hiển thị

Ví dụ

<?php
function add(int $num1, int $num2){
   return $num1 + $num2;
}
try {
   $value = add(1, 'one');
} catch (TypeError $e) {
   echo $e->getMessage(). "\n";
}
?>

Đầu ra

Kết quả sau được hiển thị

Argument 2 passed to add() must be of the type integer, string given

Ngoại lệ SPL

Thư viện PHP tiêu chuẩn chứa các ngoại lệ được xác định trước

LogicException Ngoại lệ biểu thị lỗi trong logic chương trình.
BadFunctionCallException Được đưa ra ngoại lệ nếu một lệnh gọi lại tham chiếu đến một hàm không xác định hoặc nếu thiếu một số đối số.
BadMethodCallException Ngoại lệ được ném ra nếu một lệnh gọi lại tham chiếu đến một phương thức không xác định hoặc nếu thiếu một số đối số.
Ngoại lệ miền Ngoại lệ được ném ra nếu giá trị không tuân theo miền dữ liệu hợp lệ đã xác định.
InvalidArgumentException Ngoại lệ được ném ra nếu một đối số không thuộc loại mong đợi.
LengthException Ngoại lệ được ném ra nếu độ dài không hợp lệ.
OutOfRangeException Ngoại lệ được đưa ra khi một chỉ mục bất hợp pháp được yêu cầu.
RuntimeException Ngoại lệ được ném ra nếu xảy ra lỗi chỉ có thể được tìm thấy trong thời gian chạy.
OutOfBoundsException Ngoại lệ được ném ra nếu giá trị không phải là khóa hợp lệ.
OverflowException Đã ném ngoại lệ khi thêm phần tử vào vùng chứa đầy đủ.
RangeException Đã ném ngoại lệ để chỉ ra lỗi phạm vi trong quá trình thực thi chương trình. Một lỗi số học không phải dưới / tràn.
UnderflowException Ngoại lệ được ném ra khi thực hiện một thao tác không hợp lệ trên vùng chứa trống, chẳng hạn như xóa một phần tử.
Bất ngờ về giá trị ngoại lệ Ngoại lệ được ném ra nếu một giá trị không khớp với một bộ giá trị.

Ví dụ sau cho thấy OutOfBoundsException được ném khi không tìm thấy khóa trong mảng PHP

Ví dụ

<?php
$arr=array("one"=>1, "two"=>2,"three"=>3,"four"=>4);
$key="ten";
try{
   if (array_key_exists($key, $arr)==FALSE){
      throw new OutOfBoundsException("key not found");}
   else {
      echo $arr[$key];}
   }
   catch (OutOfBoundsException $e){
      echo $e->getMessage(). "\n";
}
?>

Đầu ra

Kết quả sau được hiển thị

Không tìm thấy khóa
key not found