
我们在日常开发中,遇到错误是难免的,有些时候我们可以指定一个函数作为错误来处理函数,在PHP中就存在一个自定义错误处理函数。
set_error_handler() 函数自定义错误处理函数
PHP中提供了set_error_handler()函数就是用来指定一个函数作为错误处理函数,它的语法格式如下:
set_error_handler(自定义函数名 [, int $error_types = E_ALL | E_STRICT ])
其中自定义函数名这个自定义函数的语法格式如下:
error_handler(int 错误的级别 , string 错误的信息 [, string 发生错误的文件名 [, int 发生错误的行号 ]])
之前如果有过定义的错误处理程序,返回的就是改程序的程序名称;如果是内置的错误处理程序,返回的结果是NULL。若是指定了一个无效的回调函数,同样会返回NULL。
接下来我们通过示例来看一下,自定义一个错误处理函数,并使用它来处理程序中的错误,示例如下:
<?php
function error_handler($errno, $errstr, $errfile, $errline ) {
echo "error number:".$errno."<br/>";
echo "error msg:".$errstr."<br/>";
echo "error file:".$errfile."<br/>";
echo "error line:".$errline."<br/>";
die('something error');
}
set_error_handler("error_handler");
strpos();
?>输出结果:

我们在使用此函数时需要注意的是,只用这种方式来进行错误处理,若是函数没有错误的话,或者说程序没有在错误的函数中运行,程序会继续往下执行发生错误的函数语句,因此我们需要使用die()函数来终止函数的运行。
在我们的日常开发中,程序中的异常无法自动抛出来,这时候我们也可以使用set_error_handler() 自定义,将异常当作错误来处理,这样我们就可以使用自定义错误处理来自动捕捉异常。
示例如下:
<?php
function error_handler($errno, $errstr, $errfile, $errline ) {
echo "error number:".$errno."<br/>";
echo "error msg:".$errstr."<br/>";
echo "error file:".$errfile."<br/>";
echo "error line:".$errline."<br/>";
die('something error');
}
set_error_handler("error_handler");
/* 触发异常 */
try {
$a = 5/0;//程序会自动捕捉这个异常,并且由自定义函数来处理
echo $a;
} catch(Exception $e) {
echo $e->getMessage();
}
?>输出结果:

错误屏蔽
在PHP开发过程中,我们不仅可以通过set_error_handler()自定义错误处理函数来处理错误,我们还能够把错误屏蔽掉,在有些情况下,错误屏蔽也是必不可少的。那接下来给大家列举一些用于错误屏蔽的方法。
@---错误控制运算符
在PHP中,将错误控制运算符@,放在一个表达式的前面,那这个表达式中可能存在的错误都会被屏蔽掉。
其中关于@的使用,我们需要注意的是:@运算符只有放在表达式的前面才会生效,例如变量、函数、常量等等的前面可以使用@运算符,绝对不能放在函数的或者类的定义之前,也不能够放在条件结构语句的前面。
示例如下:
<?php
$link = @mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db") or die('数据库连接失败!');
?>输出结果:

在上述示例中,看得出通过@错误控制运算符,在表达式前能够屏蔽表达式。
使用
error_reporting()函数屏蔽错误
PHP 中有很多的错误级别,使用 error_reporting() 函数可以设置 PHP 会报告何种错误,函数的语法格式如下:
error_reporting(设置错误级别)
关于错误级别在上一篇文章《带你一起了解PHP的错误类型和错误级别》中有更详细的介绍,接下来我们通过示例来看一下函数的使用:
<?php
error_reporting(0);
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db") or die('数据库连接失败!');
?>输出结果:

通过
display_errors参数屏蔽错误
这种方法时最彻底的一种方法,前面两种方法只作用于单行或者单个文件,但是通过display_errors 参数屏蔽错误是作用在所有的PHP文件,那我们一起来看一下应该怎么操作吧。
首先我们需要打开php.ini配置文件,然后找到display_errors,将其的值设置为Off就可以关闭所有的PHP错误报告了。
(在之前的文章《PHP如何上传文件?看完就明白了!》中介绍了怎样去php,ini配置文件的相关知识)
示例如下:

由此便能够屏蔽错误了。
大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。
-
什么是黑盒测试?有哪些常用的黑盒测试方法? 时间:2025-10-29 -
视频码率是什么意思?怎么调节好?FPS越高越好吗? 时间:2025-10-29 -
什么是子网掩码和默认网关?它们各有什么作用? 时间:2025-10-29 -
Java中System.setProperty()用法、应用场景和设置属性详解 时间:2025-10-29 -
什么是堡垒机和跳板机?两者之间有什么区别? 时间:2025-10-29 -
什么是堡垒机 堡垒机的作用功能和原理 堡垒机和防火墙的区别 时间:2025-10-29
今日更新
-
2026年加密货币投资新手必看:5大优质平台排名与指南
阅读:18
-
"皮皮虾是什么梗?揭秘网络爆火神兽的搞笑日常"
阅读:18
-
2026全球五大最稳定交易所推荐 支持法币充值交易更便捷
阅读:18
-
2026年最值得关注的加密货币:TON SOL SUI涨幅领先
阅读:18
-
键盘侠是什么梗?指网络上爱指点江山却无实际行动的网友,快来了解这一网络热词背后的真相!
阅读:18
-
2026年十大潜力公链代币:ETH、SOL、APT领跑区块链投资新趋势
阅读:18
-
什么霞是什么梗?揭秘网络热词霞的爆火真相,3秒get流行密码!
阅读:18
-
2026年最具潜力NFT与GameFi代币TOP10榜单
阅读:18
-
2026年全球加密货币市值排名:比特币BTC稳居榜首
阅读:18
-
"什么下笔是什么梗"解析:网络热词出处及爆火原因揭秘,看完秒懂!
阅读:18










