52680.fb2
void trigger_error(string error_msg [, int error_type])
Явно вызывает функцию, установленную для обработки ошибок, и обычно используется в паре с обработчиком ошибок. Функция способна генерировать только пользовательские типы ошибок ( семейство констант E_USER), и по умолчанию, если не указан тип ошибки error_type, он считается E_USER_NOTICE.
Возможно конструировать сложные конструкции генерации и обработки ошибок и исключительных ситуаций.
if(assert($divisor == 0))
trigger_error ("Нельзя делить на 0 ", E_USER_ERROR);
user_error
Синоним функции trigger_error().
Синтаксис:
void user_error(string error_msg [, int error_type])
set_error_handler
Установка пользовательского обработчика ошибок.
Синтаксис:
string set_error_handler(string error_handler)
Функция возвращает имя функции, ранее определенной в качестве обработчика ошибок (или FALSE при ошибке), и устанавливает, в качестве нового обработчика, функцию с указанным в аргументе error_handler именем.
Обычно пользовательский обработчик ошибок работает в паре с функцией trigger_error(), генерирующей ошибку. Это может быть использовано (подобно аналогичной конструкции работы с исключениями в C) для освобождения выделенных ресурсов (например, удаления созданных файлов), если сценарий не может нормально завершиться.
Функция, устанавливаемая в качестве обработчика ошибок, должна принимать пять параметров (три последних являются дополнительными и могут не обрабатываться):
<?php
// определить константы пользовательских ошибок
define(FATAL, E_USER_ERROR);
define(ERROR, E_USER_WARNING);
define(WARNING, E_USER_NOTICE);
// установить, какие ошибки должны обрабатываться в сценарии
error_reporting (FATAL | ERROR | WARNING);
// пользовательский обработчик ошибок
function myErrorHandler($errno,$errstr,$errfile,$errline) {
switch ($errno) {
case FATAL:
echo "<b>Критическая ошибка</b> [$errno] $errstr<br>n";
echo "в строке: $errline файла:".$errfile;
echo ", PHP ".PHP_VERSION." (".PHP_OS.")<br>n";
echo "Aborting...<br>n";
exit -1;
break;
case ERROR:
echo "<b>Ошибка</b> [$errno] $errstr<br>n";
break;
case WARNING:
echo "<b>Предупреждение</b> [$errno] $errstr<br>n";
break;
default:
echo "Неизвестный тип ошибки: [$errno] $errstr<br>n";
}
}
// функция для проверки обработки ошибок
// (масштабирование массива
function scale_by_log($vect, $scale) {
if(!is_numeric($scale) || $scale <= 0)
trigger_error("вычислить log(x) для x <= 0 нельзя. ",
"(x = $scale)", FATAL);