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

В PHP5 як і в інших потужних мовах програмування (наприклад Java) існує механізм викиду і перехоплення виняткових ситуацій.

Для цього необхідно помістити потенційно небезпечний код в блок try для перехоплення виключення. Кожен try повинен супроводжуватися як мінімум одним блоком catch.

Множинні блоки catch можна використовувати для перехоплення виключень різних класів. Меньше слів більше діла:

Цей фрагмент коду чудово демонструє процес викиду винятку. Якщо ви зараз запустите сторінку з цим кодом, то отримаєте повідомлення на подобі цього:

Fatal error: Uncaught exception 'Exception' with message 'Parameter can not be larger then 3!' In C: \ wamp \ www \ privat \ codeforest \ exceptions \ index.php: 15 Stack trace: # 0 C: \ wamp \ www \ privat \ codeforest \ exceptions \ index.php (23): Generic-> testValue (4) # 1 thrown in C: \ wamp \ www \ privat \ codeforest \ exceptions \ index.php on line 15

Це сталося через відсутність блоку try-catch. Виправимо ситуацію наступним чином:

Тепер ми успішно спіймали наше виключення. Доказ цьому повідомлення на екрані.

Так само існує можливість отримання детальної інформації при перехопленні виняткової ситуації. Це корисно тоді, коли у вас викидаються десятки або сотні винятків. Для того, щоб швидко знайти код, де це сталося, можна скористатися спеціальними методами:

Цей приклад не сильно відрізняється від минулого. Тут ми використовуємо методи об'єкта, згенерованого в блоці catch для отримання більш детальної інформації про виключення, а саме саме повідомлення про помилку, код помилки (якщо такий є), файл і лінія, де цей виняток було оброблено.

Тепер в принципі вам повинні бути зрозумілі переваги винятків. Зверніть увагу на цей простий механізм, який може допоможе вам відловлювати недоліки навіть в самих "глибоких" місцях. В добавок він дає вам детальну інформацію про помилку, що дозволить вам швидко все виправити.

У цьому новому прикладі я використовую більш складну систему перехоплення виняткових ситуацій, які будуть викликатися в залежності від другого параметра, який використовується в блоці CATCH. Це дозволить вам створити систему ще гнучкіше в залежності від викидається типу виключення.

Але це ще не все, що ви можете робити. Ви так само можете створювати свої типи винятків. В цьому немає нічого складного. Нам потрібно просто створити додатковий клас, який буде наслідувати клас exception.

Крім успадкованих методів, ви так само можете додати і свої. Ось приклад:

У цьому прикладі ми створили наш власний тип виключення CustomException.

При виклику logError () в залежності від типу помилки, буде здійснюватися відповідні заходи (запис в логи або лист адміну).

В PHP5 існує метод set_exception_handler, який дозволяє визначити функцію перехоплює все не виловлені виключення.

PHP виключення це дуже важливий аспект, який повинен використовуватися в кожному великому проекті. Багато PHP фреймворкі використовують дану техніку для реєстрації всіх помилок, що дозволяє швидко їх усунути, тим самим будувати настільки безпечні системи наскільки це можливо.

5 останніх уроків рубрики "PHP"

Коли мова йде про безпеку веб-сайту, то фраза "фільтруйте все, екрануйте все" завжди буде актуальна. Сьогодні поговоримо про фільтрації даних.

  • Expressive 2 підтримує можливість підключення інших ZF компонент за спеціальною схемою. Не всім подобається це рішення. У цій статті ми розповімо як поліпшили процес підключення декількох модулів.

  • Припустимо, що вам необхідно відправити якусь інформацію в Google Analytics з серверного скрипта. Як це зробити. Відповідь в цій замітці.

  • Підбірка з декількох видів PHP пісочниць. На деяких ви в режимі online зможете потестить свій код, але є так само рішення, які можна впровадити на свій сайт.

    Владислав Єгоров

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

    За рахунок отримання інформації відразу по двох каналах (зір і слух) ефективність навчання значно перевершує навчання по книгах. А домашні завдання і онлайн-тести дозволять вам постійно думати на мові, що вивчається і відразу перевіряти свої знання!

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

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

    Якщо ви давно хочете як слід вивчити HTML, то у мене для Вас є чудова новина!

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

    Якщо ви вже вивчили HTML і хочете рухатися далі, то наступним кроком буде вивчення технології CSS.

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

    Якщо ви хочете розібратися з поняттями домену і хостингу, навчитися створювати бази даних, закачувати файли сайту на сервер по FTP, створювати піддомени, налаштовувати поштові скриньки для свого сайту і стежити за його відвідуваністю, то цей курс створений спеціально для вас!

    Схожі статті