Уровни ошибок в РНР
В хорошо написанных программах ошибки должны быть разбиты по категориям, чтобы обрабатываться в зависимости от степени тяжести и сущности ошибки. С этой целью в РНР4 установлено 11 уровней, позволяющих сообщать об ошибках, исходя из их тяжести и природы. Некоторые из них мы здесь опишем.
Уровни сообщений об ошибках можно устанавливать с помощью функции
erroi\_reporting(). С помощью функции trigger_error() можно сообщать об ошибках на определенных уровнях. Подробнее мы рассмотрим эти функции в следующем разделе. Уровни сообщений об ошибках следующие:
♦ Ошибка синтаксического анализа
♦ Неисправимая ошибка (fatal)
♦ Предупреждение (warning)
♦ Уведомление (notice)
♦ Уровни ошибки ядра (core error levels)
♦ Уровни ошибки компиляции (compile error levels) Рассмотрим указанные уровни ошибок более подробно.
Ошибки синтаксического анализа
Сообщения об ошибках этой группы возникают в результате синтаксического анализа. РНРЗ выполняет сценарии построчно, поэтому синтаксический анализатор РНРЗ сообщает об этих ошибках только тогда, когда встречает ошибочный оператор. Однако РНР4 сообщает о синтаксических ошибках на более ранней стадии компиляции сценария. В РНР4 сценарии с синтаксическими ошибками не компилируются и тем более не выполняются. Чтобы включить сообщение об ошибках синтаксического анализа, в качестве аргумента функции error_reporting() должна быть указана константа E PARSE.
Неисправимые ошибки
Среда выполнения сообщает о неисправимых ошибках, когда невозможно восстановление после состояния ошибки. Сообщения о неисправимых ошибках часто возникают в результате необработанных ошибок, семантических ошибок и ошибок окружения. Например, если файл, указанный в директиве require(), отсутствует, выводится сообщение о неустранимой ошибке, и выполнение программы прерывается. Чтобы включить вывод сообщений об ошибках этого уровня, в качестве аргумента функции должна быть указана константа E_ERROR.
Предупреждения
Предупреждение выводится в том случае, когда возникает ситуация, не являющаяся фатальной и не требующая прекращения выполнения сценария. Например, предупреждение выводится, когда оператор include() не может найти заданный файл. Предупреждение выводится, если логика программы не обрабатывает такую ситуацию. Предупреждение не означает, что среда выполнения в соответствии с логикой программы разумно обработала ошибку. В сценарии должны быть внесены изменения, обеспечивающие программную обработку ситуаций, вызывающих предупреждения. Для того чтобы включить вывод сообщений уровня предупреждений, в качестве аргумента функции error_reporting() следует указать константу E WARNING.