&reftitle.examples; Ниже представлен пример использования возможностей обработки ошибок в PHP. Мы определим функцию для обработки ошибок, которая будет записывать информацию об ошибках в файл (используя формат XML), а в случае возникновения критических ошибок, будем дополнительно отправлять разработчикам письмо с уведомлением. Обработка ошибок в скрипте 'Ошибка', E_WARNING => 'Предупреждение', E_PARSE => 'Ошибка разбора исходного кода', E_NOTICE => 'Уведомление', E_CORE_ERROR => 'Ошибка ядра', E_CORE_WARNING => 'Предупреждение ядра', E_COMPILE_ERROR => 'Ошибка на этапе компиляции', E_COMPILE_WARNING => 'Предупреждение на этапе компиляции', E_USER_ERROR => 'Пользовательская ошибка', E_USER_WARNING => 'Пользовательское предупреждение', E_USER_NOTICE => 'Пользовательское уведомление', E_STRICT => 'Уведомление времени выполнения', E_RECOVERABLE_ERROR => 'Отлавливаемая фатальная ошибка' ); // определим набор типов ошибок, для которых будет сохранён стек переменных $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE); $err = "\n"; $err .= "\t" . $dt . "\n"; $err .= "\t" . $errno . "\n"; $err .= "\t" . $errortype[$errno] . "\n"; $err .= "\t" . $errmsg . "\n"; $err .= "\t" . $filename . "\n"; $err .= "\t" . $linenum . "\n"; if (in_array($errno, $user_errors)) { $err .= "\t" . wddx_serialize_value($vars, "Переменные") . "\n"; } $err .= "\n\n"; // для тестирования // echo $err; // сохраняем в журнал ошибок, а если произошла пользовательская критическая ошибка, то отправляем письмо error_log($err, 3, "/usr/local/php4/error.log"); if ($errno == E_USER_ERROR) { mail("phpdev@example.com", "Пользовательская критическая ошибка", $err); } } function distance($vect1, $vect2) { if (!is_array($vect1) || !is_array($vect2)) { trigger_error("Некорректные параметры функции, ожидаются массивы в качестве параметров", E_USER_ERROR); return NULL; } if (count($vect1) != count($vect2)) { trigger_error("Векторы должны быть одинаковой размерности", E_USER_ERROR); return NULL; } for ($i=0; $i ]]>