#10. 3 php Генерация пользовательских ошибок. Функции trigger_error() и errror_log()
Primary tabs
Вывод сообщения об ошибке в окно браузера (trigger_error())
Сгенерировать ошибку и вывести сообщение о ней в окно браузера можно с помощью функции
bool trigger_error(string $error_msg, int $error_type = E_USER_NOTICE)
Первым аргументом является текст сообщения об ошибке, а вторым — её тип. Данная функция позволяет сгенерировать ошибки только пользовательских типов:
E_USER_ERROR— фатальная ошибка, вызывает прерывание скрипта;E_USER_WARNING— предупреждение;E_USER_NOTICE— уведомление о чем-то, что может привести к ошибке;E_USER_DEPRECATED— уведомление об использовании устаревших конструкций.
Функция возвращает true всегда, когда передано корректное значение $error_type, в противном случае возвращает false (ошибка не генерируется).
Пример 1.
<?php
function print_age(int $age)
{
if ($age < 0) {
trigger_error("Возраст не может быть отрицательныем числом.",
E_USER_ERROR);
}
echo "Вам $age лет";
}
print_age(-17);
Поскольку генерируется фатальная ошибка, то программа прервется, и инструкция
echo "Вам $age лет";
не будет выполнена. Текст сообщения об ошибке будет выведен в окно браузера в том случае, если в системе отслеживаются ошибки данного типа (типы отслеживаемых ошибок определяются значением директивы error_reporting конфигурационного файла php.ini):
Fatal error: Возраст не может быть отрицательныем числом. in /var/www/mysite/index.php on line 6
Запись сообщения в файл/отправка по почте (error_log())
Функция
int error_log(string $msg, int $type=0 [,string $destination]
[, string $extra_headers])
также генерирует сообщение об ошибке, текст которого передается в параметр $msg. Её дальнейшее поведение зависит от значения второго параметра:
$type == 0(используется по умолчанию) — сообщение записывается в лог-файл, заданный директивойerror_log.$type == 1— сообщение отправляется по почте на адресс, указанный в параметре$destination. Параметр$extra_headersзадает дополнительные почтовые заголовки.$type == 3— сообщение добавляется в конец файла$destination.
В результате выполнения следующего примера будет создан файл errors.txt, в который будет записано сообщение об ошибке. Если такой файл существует, сообщение будет дописано в конец файла. Программа при этом не прерывается.
Пример 2.
<?php
function print_age(int $age)
{
if ($age < 0) {
error_log("Возраст не может быть отрицательныем числом.",
1, "errors.txt");
}
echo "Вам $age лет";
}
print_age(-17);
- Log in to post comments
- 830 reads