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

Xử lý ngoại lệ trong PHP với cuối cùng

Giới thiệu

Mã trong cuối cùng khối sẽ luôn được thực thi cho dù có một ngoại lệ trong khối ry hay không. Khối này xuất hiện sau khối catch hoặc thay vì khối catch.

bắt và cuối cùng chặn

Trong ví dụ sau, cả khối catch và khối cuối cùng đều được đưa ra. Nếu quá trình thực thi xảy ra trong khối try, mã trong cả hai đều được thực thi. Nếu không có ngoại lệ, chỉ khối cuối cùng được thực thi.

Ví dụ

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

Đầu ra

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

Caught exception: Division by zero.
This block is always executed
Execution continues

thay đổi câu lệnh trong khối try để không có ngoại lệ nào xảy ra

Ví dụ

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

Đầu ra

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

2
This block is always executed
Execution continues

cuối cùng chỉ chặn

Ví dụ sau có hai khối thử. Một trong số họ chỉ có khối cuối cùng. Khối thử của nó gọi hàm div sẽ ném ra một ngoại lệ

Ví dụ

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

Đầu ra

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

Caught exception: Division by zero.
This block is always executed
Execution continues