PHP错误类型与处理
2018-06-22 05:34:24来源:未知 阅读 ()
1.PHP错误级别
E_ERROR严重错误,脚本终止执行
E_WARNING警告,非严重错误,脚本继续执行
E_NOTICE提示,不是很重要
代码实例
1 echo gettype($a); echo "E_NOTICE之后继续执行";//传递一个未定义的变量,这在PHP中是一个小问题 2 3 echo gettype(); echo "E_WARNING之后继续执行";//没有正常向函数传递参数,这会产生一个警告 4 5 echo get3();echo "E_ERROR之后继续执行";//调用一个不存在的函数,这是一个错误
|
结果
可以看到在NOTICE 和 WARNING之后,语句继续执行,而ERROR之后的语句就没有执行,如果将第5行的代码换到第1行那么后面的两条语句都不会执行。
2.关闭错误信息的报告
当遇到这些错误时,脚本会向屏幕输出错误信息,严重的错误还会终止脚本执行。
当不希望PHP将错误信息输出到页面上时,可以在在配置文件 php.ini 中将 display_errors=on (默认) 设置为display_errors=off。
3.调整错误报告级别
可以通过修改配置文件 php.ini 中 error_reporting的值,设置PHP只报告特定级别的错误。
例如:
error_reporting=0相当于display_errors=off不报告任何错误。
error_reporting=级别常量1|级别常量2|级别常量3,只输出这三种级别的错误。
error_reporting=E_ALL&~(级别常量1|级别常量2|级别常量3),表示只有这三种级别的错误不报告
如果不希望修改配置文件,可以直接在脚本中通过error_reporting()函数修改。
4.自定义错误处理
可以发现当出现错误时,PHP直接在出错的地方报告错误,这样有可能会影响到页面布局,并且,直接吧错误信息暴露出来可能会带来风险,所以尽量自己用一个函数去处理错误。
set_error_handler( funcname) 函数用来注册错误处理函数,该函数funcname()必须有四个参数,分别代表错误级别,错误信息,错误文件,错误行。
下面是一个实例,设置一个函数error_hand()将错误信息全部保存下来直到页面的结尾再输出
1 <?php 2 $error_message=''; 3 set_error_handler('error_hand'); 4 5 function error_hand($level,$message,$file,$line) 6 { 7 global $error_message; 8 9 $error_message.="错误级别为:".$level."错误信息:".$message."错误文件:".$file."错误行数:".$line."<br>"; 10 11 } 12 13 echo gettype($a); echo "E_NOTICE之后继续执行<br> ";//传递一个未定义的变量,这在PHP中是一个小问题 14 15 echo gettype(); echo "E_WARNING之后继续执行<br>";//没有正常向函数传递参数,这会产生一个警告 16 17 18 echo "------------------------------------------------------------------------<br>"; 19 echo $error_message; 20 ?>
|
结果
注:
代码中国将原来会产生ERROR的哪一行给删除了,如果不删除,这段代码是无法正常执行的,这是因为E_ERROR这种高级别的错误是不会被这个句柄处理的。
使用set_error_hand之后error_reporting会失效,也就是说所有错误信息都交给自定义函数处理
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- PHP写UltraEdit插件脚本实现方法 2020-03-29
- php 带逗号千位符数字的处理方法 2020-03-28
- PHP三元运算符的结合性介绍 2020-03-28
- PHP静态延迟绑定和普通静态效率的对比 2020-03-28
- 基于php流程控制语句和循环控制语句 2020-03-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash