В 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 зможете потестить свій код, але є так само рішення, які можна впровадити на свій сайт.
Владислав Єгоров
За рахунок отримання інформації відразу по двох каналах (зір і слух) ефективність навчання значно перевершує навчання по книгах. А домашні завдання і онлайн-тести дозволять вам постійно думати на мові, що вивчається і відразу перевіряти свої знання!
Якщо ви давно хочете як слід вивчити HTML, то у мене для Вас є чудова новина!
Якщо ви вже вивчили HTML і хочете рухатися далі, то наступним кроком буде вивчення технології CSS.
Якщо ви хочете розібратися з поняттями домену і хостингу, навчитися створювати бази даних, закачувати файли сайту на сервер по FTP, створювати піддомени, налаштовувати поштові скриньки для свого сайту і стежити за його відвідуваністю, то цей курс створений спеціально для вас!