Учебник по основам PHP. PHPBeginner


         

Отслеживание и обработка ошибок


РНР имеет следующие типы ошибок и предупреждений:

Значение Константа Описание
1 E_ERROR Фатальная ошибка времени исполнения
2 E_WARNING Предупреждение времени исполнения
4 E_PARSE Сообщение интерпретации времени исполнения
8 E_NOTICE Простое сообщение времени исполнения
16 E_CORE_ERROR Фатальная ошибка при инициализации РНР
32 E_CORE_WARNING Предупреждение инициализации
64 E_COMPILE_ERROR Фатальная ошибка компиляции
128 E_COMPILE_ WARNING Предупреждения компиляции
256 E_USER_ERROR Ошибки, определяемые пользователем
512 E_USER_WARNING Предупреждения, определяемые пользователем
1024 E_USER_NOT1CE Сообщения, определяемые пользователем
2047 E_ALL Все перечисленные сообщения

Указанные значения в виде чисел или консгант можно комбинировать, формируя битовую маску ошибок, о которых необходимо сообщать в ходе исполнения сценария. Для комбинирования используются битовые операторы, но в конфигурационном файле php.ini ' распознаются только «|», «-», «!» и <<&>>.

В PHP 4 по умолчанию разрешены сообщения вида E_ALL & -EJJOTICE, то ость сообщаться должно все, кроме обычных сообщений. Можно переопределить эту установку параметром файла конфигурации еггог_ reporting (ее также можно указывать в файлах конфигурации сервера Apache); а во время исполнения — функцией error_reporting().

Если при вызове функции перед ее именем указать символ «@», то в случае возникновения ошибки в этой функции сообщение о нем выдаваться не будет.

В настоящее время оператор игнорирования ошибок блокирует даже выдачу сообщений о критических ошибках, при возникновении которых сценарий досрочно завершается.

Если разрешен параметр конфигурации track_errors, то сообщение об ошибке сохраняется в глобальной переменной $php_errormsg.

«?php // определенный
пользователем обработчик ошибок
function userErrorHandler (Serrno. Serrmsg.
Sfilenamp Slirenum. Svarb) { $dt = date
("Y-m-d H i:s (Т)"). // время возникновения
ошибки Serrortype = array
( 1 => "Error". 2 => "Warning".
4 => "Parsing Error". 8 => "Notice".
16 => "Core Error". 32 =>
"Core Warning". 64 => "Compile Error".
128 => "Compile Warning". 256 =>
"User Error". 512 => "User Warning".
1024=> "User Notice" );
$err .= "время ($dt). номер ошибки
($errno). ": $err .= "тип ошибки
C'.$errortype[$errno]."): ":
$err = "\"$errmsg\", файл
\"$filename\". строка (".
$err .= $linenum.")\n";
I $user_errors - array
(E_USER_ERROR. E_USER_WARNING.
E_USER_NOTICE): if (in_array($errno.
$user_errors))
echo $err;
// выдать сообщения для ошибок
пользователя // сохранить событие
ошибки в системном журнале
error_log($err. 3.
"/usr/local/php4/error.log"): }
// установить уровень контроля
ошибок и обработчик error_reporting(0)
: // не выводить сообщения РНР
$old_error_handler = set_error_handler
("userErrorHandler");
// неопределенная константа вызывает
предупреждение
$t = _NOT_DEFINED_CONSTANT.
tngger_error("Mos ошибка". E_USER_ERROR);
tngger_error
("Moe предупреждение".
E_USER_WARNING): ?>



Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий