exceptions

Обробка винятків

Модель винятків (exceptions) в PHP 5 простіша, ніж в інших мовах програмування. Виняток можна згенерувати (як кажуть, "викинути") за допомогою оператора throw, і можна перехопити (або, як кажуть, "піймати") оператором catch. Код, що викидає виключення, повинен бути оточений блоком try, для того щоб можна було перехопити виняток. Кожен блок try повинен мати як мінімум один відповідний блок catch. Так само можна використовувати кілька блоків catch, що перехоплюють різні класи винятків. Нормальне виконання буде продовжено за останнім блоком catch. Винятки так само можуть бути згенерованими (або перегереровані - тобто викинуті знову) оператором throw всередині блоку catch.

При генерації виключення, код який слідує нижче оператора throw виконаний не буде, а PHP зробить спробу знайти перший блок catch, що перехоплює виключення даного класу. Якщо виключення не буде перехоплено, PHP видасть повідомлення про помилку: "Uncaught Exception ..." (неперехоплений виняток), якщо звичайно не був визначений обробник помилок за допомогою функції set_exception_handler ().

Приклад Викид винятків

<? Php
function inverse ($x) {
if (!$x) {
throw new Exception ('Поділ на нуль.');
}
else return 1 / $x;
}

try {
echo inverse (5). "\n";
echo inverse (0). "\n";
} Catch (Exception $e) {
echo 'Викинуто виняток:', $e-> getMessage (), "\ n";
}

// Продовження виконання
echo 'Hello World';
?>

Результат виконання цього прикладу:

0.2
Викинуто виняток: Поділ на нуль.
Hello World