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

Ngoại lệ lồng nhau trong PHP

Giới thiệu

Các khối thử - bắt có thể được lồng vào bất kỳ mức độ mong muốn nào. Các ngoại lệ sẽ được xử lý theo thứ tự ngược lại của sự xuất hiện, tức là xử lý ngoại lệ trong cùng được thực hiện trước.

Ví dụ

Trong ví dụ sau, khối try bên trong kiểm tra xem một trong hai biến thể không phải là số, và nếu có, ném một ngoại lệ do người dùng xác định. Khối thử bên ngoài ném DivisionByZeroError nếu mẫu số là 0. Nếu không, phép chia hai số được hiển thị.

Ví dụ

<?php
class myException extends Exception{
   function message(){
      return "error : " . $this->getMessage() . " in line no " . $this->getLine();
   }
}
$x=10;
$y=0;
try{
   if (is_numeric($x)==FALSE || is_numeric($y)==FALSE)
      throw new myException("Non numeric data");
}
catch (myException $m){
   echo $m->message();
   return;
}
if ($y==0)
   throw new DivisionByZeroError ("Division by 0");
echo $x/$y;
}
catch (DivisionByZeroError $e){
   echo $e->getMessage() ."in line no " . $e->getLine();
}
?>

Đầu ra

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

Division by 0 in line no 19

Thay đổi bất kỳ một trong các biến thể thành giá trị không phải số

error : Non numeric data in line no 20

Nếu cả hai biến đều là số, phép chia của chúng sẽ được in ra