Винятки, керівництво по php

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

Генерований об'єкт повинен належати класу Exception або успадковуватися від Exception. Спроба згенерувати виключення іншого класу призведе до непоправної помилки.

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

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

У PHP 5.5 і пізніших версіях також можна використовувати блок finally після або замість блоку catch. Код в блоці finally завжди буде виконуватися після коду в блоках try і catch. незалежно чи було кинуто виключення чи ні, перед тим як продовжиться нормальне виконання коду. whether an exception has been thrown, and before normal execution resumes.

Примітки

Внутрішні функції PHP в основному використовують повідомлення про помилки. і тільки нові об'єктно-орієнтовані розширення використовують виключення. Однак, помилки можна легко перетворити в виключення з допомогою класу ErrorException.

Схожі статті