set_error_handler可自定义PHP错误处理,通过指定回调函数捕获错误,实现日志记录、用户友好提示等;回调函数接收错误级别、消息、文件和行号参数,根据错误类型执行不同逻辑,返回true避免默认处理,调用restore_error_handler可恢复默认机制。

PHP
set_error_handler
解决方案
使用
set_error_handler
下面是一个简单的例子:
立即学习“PHP免费学习笔记(深入)”;
<?php
// 自定义错误处理函数
function myErrorHandler($errno, $errstr, $errfile, $errline) {
$error_message = "错误级别: " . $errno . "\n";
$error_message .= "错误信息: " . $errstr . "\n";
$error_message .= "文件: " . $errfile . "\n";
$error_message .= "行号: " . $errline . "\n";
$error_message .= "------------------------------------\n";
// 将错误写入日志文件
error_log($error_message, 3, "error.log");
// 根据错误级别,决定是否中断脚本执行
if ($errno == E_USER_ERROR) {
echo "<b>发生致命错误,请检查日志文件!</b>";
exit(1); // 退出脚本
} else {
echo "<b>发生错误,详情请查看日志文件!</b>";
}
}
// 设置自定义错误处理函数
set_error_handler("myErrorHandler");
// 触发一个错误
trigger_error("这是一个测试错误", E_USER_WARNING);
// 触发一个致命错误
trigger_error("这是一个致命错误", E_USER_ERROR);
echo "这段代码不会被执行,因为上面触发了致命错误";
?>在这个例子中:
myErrorHandler
$errno
$errstr
$errfile
$errline
error_log
error.log
E_USER_ERROR
exit(1)
set_error_handler("myErrorHandler");myErrorHandler
trigger_error
E_USER_WARNING
E_USER_ERROR
自定义错误处理器的返回值有什么作用?
set_error_handler
FALSE
FALSE
NULL
如何恢复 PHP 默认的错误处理?
有时候,你可能只想在程序的某一部分使用自定义错误处理,之后想恢复到 PHP 默认的错误处理。 可以使用
restore_error_handler()
<?php
// 设置自定义错误处理函数
set_error_handler("myErrorHandler");
// ... 一些使用自定义错误处理的代码 ...
// 恢复 PHP 默认的错误处理
restore_error_handler();
// ... 之后使用 PHP 默认错误处理的代码 ...
?>如何处理不同类型的错误?
set_error_handler
E_ERROR
E_PARSE
E_CORE_ERROR
E_CORE_WARNING
E_COMPILE_ERROR
E_COMPILE_WARNING
E_STRICT
$errno
<?php
function myErrorHandler($errno, $errstr, $errfile, $errline) {
switch ($errno) {
case E_USER_ERROR:
echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
echo " Fatal error on line $errline in file $errfile";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
echo "Aborting...<br />\n";
exit(1);
break;
case E_USER_WARNING:
echo "<b>My WARNING</b> [$errno] $errstr<br />\n";
break;
case E_USER_NOTICE:
echo "<b>My NOTICE</b> [$errno] $errstr<br />\n";
break;
default:
echo "Unknown error type: [$errno] $errstr<br />\n";
break;
}
/* Don't execute PHP internal error handler */
return true;
}
// 设置自定义错误处理函数
set_error_handler("myErrorHandler");
// 触发不同类型的错误
trigger_error("这是一个用户错误", E_USER_ERROR);
trigger_error("这是一个用户警告", E_USER_WARNING);
trigger_error("这是一个用户通知", E_USER_NOTICE);
?>这段代码展示了如何使用
switch
default
以上就是php set_error_handler如何自定义错误处理 php自定义错误处理器设置指南的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号