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