Учебное пособие: Обработка ошибок в коде программ РНР
3.3 РАСКРУТКА СТЕКА
3.4 ИСКЛЮЧЕНИЯ И ДЕСТРУКТОРЫ
3.5 ИСКЛЮЧЕНИЯ И set_error_handler()
3.6 КЛАССИФИКАЦИЯ И НАСЛЕДОВАНИЕ
3.7 БАЗОВЫЙ КЛАСС Exception
3.8 ИСПОЛЬЗОВАНИЕ ИНТЕРФЕЙСОВ
3.9 БЛОКИ-ФИНАЛИЗАТОРЫ
3.9.1 Неподдерживаемая конструкция try...finally
3.9.2 "Выделение ресурса есть инициализация"
3.9.3 Перехват всех исключений
3.10 ТРАНСФОРМАЦИЯ ОШИБОК
3.10.1 Серьезность "несерьезных" ошибок
3.10.2 Преобразование ошибок в исключения
3.10.3 Код библиотеки PHP_Exceptionizer
3.10.4 Иерархия исключений
3.10.5 Фильтрация по типам ошибок
3.10.6 Перспективы
ЗАКЛЮЧЕНИЕ
ЛИТЕРАТУРА
ВВЕДЕНИЕ
Имеется мнение: "В любой программе есть хотя бы одна ошибка". На практике "хотя бы одна" означает "много" или даже "очень много".
Фаза "избавления" программы от ошибок (фаза отладки) является наиболее длительной и трудоемкой. Основное времяпровождение программиста (и не только) — это борьба с ошибками.
Одна из самых сильных черт РНР — возможность отображения сообщений об ошибках прямо в браузере. В зависимости от состояния интерпретатора сообщения будут выводиться в браузер или подавляться.
Для успешной борьбы с ошибками нужно научиться управлять настройками РНР, узнать о его тонких местах и о возможностях основных директив. Отдельное внимание следует уделять методикам отладки скриптов, а точнее — обработке сообщений об ошибках и предупреждений, которые могут возникнуть во время работы программы, а также выводу стека вызовов процедур (подобного тому, что существует в языках Java и Perl). Следует с осторожностью использовать оператор отключения предупреждений об ошибках.
Задача обработки ошибок в коде программы - одна из самых важных и популярных при программировании. Для ее успешного решения требуется уточнить понятие термина "ошибка" и определить его роль в программировании, а также изучить различные классификации ошибочных ситуаций. Эта задача может быть эффективно решена при использовании понятия "исключение" и способов применения конструкции try...catch. Использование механизма наследования и классификации исключений может сильно сократить код программы и сделать его универсальным. Существуют коды библиотек, позволяющих обрабатывать многочисленные ошибки и предупреждения, генерируемые функциями РНР, как обыкновенные исключения.
Грамотный перехват ошибок с самого зарождения программирования считался трудной задачей. Механизм обработки исключений, хотя и упрощает ее, но все равно остается весьма сложным.
1. КОНТРОЛЬ ОШИБОК
Термин "ошибка" имеет три различных значений:
1. Ошибочная ситуация — факт наличия ошибки в программе. Это может быть, например, синтаксическая ошибка (пропущенная скобка), или же ошибка семантическая — смысловая (использование переменной, которая ранее не была определена).
2. Внутреннее сообщение об ошибке ("внутренняя ошибка"), которую выдает РНР в ответ на различные неверные действия программы (например, открытие несуществующего файла).
В РНР можно устанавливать различные режимы отображения ошибок, поэтому факт наличия ошибки в программе в смысле предыдущего пункта далеко не всегда приводит к выводу сообщения о ней.