Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Nested Exception (Ngoại lệ lồng nhau) trong PHP

Giới thiệu

Các block try-catch có thể lồng nhau đến bất kỳ mức độ mong muốn. Ngoại lệ sẽ được xử lý theo thứ tự ngược lại thứ tự xuất hiện, tức là xử lý exception bên trong (innermost) trước.

Ví dụ

Trong ví dụ sau, inner try block kiểm tra nếu một trong hai biến không phải numeric, ném user-defined exception. Outer try block ném DivisionByZeroError nếu mẫu số là 0. Nếu không, phép chia được hiển thị.

<?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();
}
?>

Kết quả

Division by 0 in line no 19

Thay đổi một biến thành non-numeric:

error : Non numeric data in line no 20

Nếu cả hai biến đều là số, phép chia được in ra.