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

Xử lý ngoại lệ trong PHP với nhiều khối bắt

Giới thiệu

PHP cho phép một loạt các khối bắt sau khối try để xử lý các trường hợp ngoại lệ khác nhau. Nhiều khối bắt khác nhau có thể được sử dụng để xử lý các lỗi và ngoại lệ được xác định trước cũng như các ngoại lệ do người dùng xác định.

Ví dụ

Ví dụ sau sử dụng các khối bắt để xử lý các điều kiện DivisioByZeroError, TypeError, ArgumentCountError và InvalidArgumentException. Ngoài ra còn có một khối bắt để xử lý Ngoại lệ chung.

Ví dụ

<?php
declare(strict_types=1);
function divide(int $a, int $b) : int {
   return $a / $b;
}
$a=10;
$b=0;
try{
   if (!$b) {
      throw new DivisionByZeroError('Division by zero.');}
      if (is_int($a)==FALSE || is_int($b)==FALSE)
         throw new InvalidArgumentException("Invalid type of arguments");
         $result=divide($a, $b);
         echo $result;
      }
      catch (TypeError $x)//if argument types not matching{
         echo $x->getMessage();
   }
   catch (DivisionByZeroError $y) //if denominator is 0{
      echo $y->getMessage();
}
catch (ArgumentCountError $z) //if no.of arguments not equal to 2{
   echo $z->getMessage();
}
catch (InvalidArgumentException $i) //if argument types not matching{
   echo $i->getMessage();
}
catch (Exception $ex) // any uncaught exception{
   echo $ex->getMessage();
}
?>

Đầu ra

Đầu tiên, vì mẫu số là 0, lỗi Chia cho 0 sẽ hiển thị

Division by 0

Đặt $ b =3 sẽ gây ra Lỗi TypeError vì hàm chia được mong đợi trả về số nguyên nhưng phép chia dẫn đến số float

Return value of divide() must be of the type integer, float returned

Nếu chỉ một biến được truyền cho hàm chia bằng cách thay đổi $ res =split ($ a); điều này sẽ dẫn đến ArgumentCountError

Too few arguments to function divide(), 1 passed in C:\xampp\php\test1.php on line 13 and exactly 2 expected

Nếu một trong các đối số không phải là số nguyên, thì đó là trường hợp của InvalidArgumentException

Invalid type of arguments