mirror of
https://github.com/igorsimdyanov/php8.git
synced 2025-08-13 14:45:09 +00:00
Глава 35: контроль ошибок
This commit is contained in:
5
errors/log.php
Normal file
5
errors/log.php
Normal file
@ -0,0 +1,5 @@
|
||||
<?php
|
||||
error_reporting(E_ALL);
|
||||
ini_set('error_log', 'log.txt');
|
||||
ini_set('log_errors', true);
|
||||
@filemtime('spoon');
|
0
errors/log.txt
Normal file
0
errors/log.txt
Normal file
3
errors/php.ini
Normal file
3
errors/php.ini
Normal file
@ -0,0 +1,3 @@
|
||||
...
|
||||
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
|
||||
...
|
17
errors/set_error_handler.php
Normal file
17
errors/set_error_handler.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
// Определяем новую функцию-обработчик
|
||||
function myErrorHandler($errno, $msg, $file, $line)
|
||||
{
|
||||
echo '<div style="border-style:inset; border-width:2">';
|
||||
echo "Произошла ошибка с кодом <b>$errno</b>!<br />";
|
||||
echo "Файл: <tt>$file</tt>, строка $line.<br />";
|
||||
echo "Текст ошибки: <i>$msg</i>";
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
// Регистрируем ее для всех типов ошибок
|
||||
set_error_handler('myErrorHandler', E_ALL);
|
||||
|
||||
// Вызываем функцию для несуществующего файла, чтобы
|
||||
// сгенерировать предупреждение, которое будет перехвачено
|
||||
filemtime('spoon');
|
23
errors/suppression.php
Normal file
23
errors/suppression.php
Normal file
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
// Определяем новую функцию-обработчик
|
||||
function myErrorHandler($errno, $msg, $file, $line)
|
||||
{
|
||||
// Если используется @, ничего не делать
|
||||
$code = E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR |
|
||||
E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE;
|
||||
if (error_reporting() == $code) return;
|
||||
|
||||
// Иначе выводим сообщение
|
||||
echo '<div style="border-style:inset; border-width:2">';
|
||||
echo "Произошла ошибка с кодом <b>$errno</b>!<br />";
|
||||
echo "Файл: <tt>$file</tt>, строка $line.<br />";
|
||||
echo "Текст ошибки: <i>$msg</i>";
|
||||
echo "</div>";
|
||||
}
|
||||
|
||||
// Регистрируем ее для всех типов ошибок
|
||||
set_error_handler('myErrorHandler', E_ALL);
|
||||
|
||||
// Вызываем функцию для несуществующего файла, чтобы
|
||||
// сгенерировать предупреждение, которое будет перехвачено
|
||||
@filemtime('spoon');
|
17
errors/trace.php
Normal file
17
errors/trace.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
function inner($a)
|
||||
{
|
||||
// Внутренняя функция
|
||||
echo '<pre>';
|
||||
print_r(debug_backtrace());
|
||||
echo '</pre>';
|
||||
}
|
||||
|
||||
function outer($x)
|
||||
{
|
||||
// Родительская функция
|
||||
inner($x * $x);
|
||||
}
|
||||
|
||||
// Главная программа
|
||||
outer(3);
|
14
errors/trigger_error.php
Normal file
14
errors/trigger_error.php
Normal file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
function print_age(int $age)
|
||||
{
|
||||
$prefix = 'Функция print_age(): ';
|
||||
$error = 'возраст не может быть отрицательным';
|
||||
if ($age < 0) {
|
||||
trigger_error($prefix . $error, E_USER_ERROR);
|
||||
}
|
||||
|
||||
echo "Возраст составляет: $age";
|
||||
}
|
||||
|
||||
// Вызов функции с отрицательным аргументом
|
||||
print_age(-10);
|
Reference in New Issue
Block a user