set_error_handler() 顾名思义,自定义错误的处理
2017-01-09 11:24
351 查看
一个很有用的函数, set_error_handler() 顾名思义,自定义错误的处理。很有用的函数:
可以用来屏蔽错误。 出现错误一来会把一些信息暴漏给用户,极有可能成为黑客攻击你网站的工具。 二来让用户觉得你的水平很挫。
可以记下错误的信息, 及时发现一些生产环境的出现的问题。
可以做相应的处理, 出错的时候可以显示跳转到预先定义好的出错页面,提供更好的用户体验。
可以作为调试工具, 一些时候必须在生产环境调试一些东西, 但又不想影响正在使用的用户。
。。。。
废话不多说, 上代码:
view sourceprint?
可以用来屏蔽错误。 出现错误一来会把一些信息暴漏给用户,极有可能成为黑客攻击你网站的工具。 二来让用户觉得你的水平很挫。
可以记下错误的信息, 及时发现一些生产环境的出现的问题。
可以做相应的处理, 出错的时候可以显示跳转到预先定义好的出错页面,提供更好的用户体验。
可以作为调试工具, 一些时候必须在生产环境调试一些东西, 但又不想影响正在使用的用户。
。。。。
废话不多说, 上代码:
view sourceprint?
01 | <?php |
02 | //屏蔽程序中的错误 |
03 | error_reporting (0); |
04 |
05 | //定义Error_Handler 函数 |
06 | /** |
07 | * 定义Error_Handler 函数 |
08 | * |
09 | *@param $error_level 错误级别 |
10 | *@param $error_message 错误信息 |
11 | *@param $file 错误所在文件 |
12 | *@param $line 错误所在行数 |
13 | * |
14 | */ |
15 | function error_handler ( $error_level , $error_message , $file , $line ) { |
16 |
17 | $EXIT = FALSE; |
18 |
19 | switch ( $error_level ) { |
20 | //提醒级别 |
21 | case E_NOTICE: |
22 | case E_USER_NOTICE: |
23 | $error_type = 'Notice' ; |
24 | break ; |
25 |
26 | //警告级别 |
27 | case E_WARNING: |
28 | case E_USER_WARNING: |
29 | $error_type = 'Warning' ; |
30 | break ; |
31 |
32 | //错误级别 |
33 | case E_ERROR: |
34 | case E_USER_ERROR: |
35 | $error_type = 'Fatal Error' ; |
36 | $EXIT =TRUE; |
37 | break ; |
38 |
39 | //其他未知错误 |
40 | default : |
41 | $error_type = 'Unknown' ; |
42 | $EXIT =TRUE; |
43 | break ; |
44 | } |
45 | //直接打印错误信息, 也可以写文件, 写数据库, 反正错误信息都在这, 任你发落 |
46 | printf ( "<font color='#ff0000'><b>%s</b></font>: %s in <b>%s</b> on line <b>%d</b><br /><br />\n" , $error_type , $error_message , $file , $line ); |
47 |
48 | //错误影响到程序的正常执行的话跳转到友好的错误提示页面 |
49 | if (TRUE == $EXIT ) { |
50 | echo "<script language='Javascript'>location='err.html'; </script>" ; |
51 | } |
52 |
53 | } |
54 | //这个才是关键点, 把错误的处理交给 error_handler() |
55 | set_error_handler ( 'error_handler' ); |
56 |
57 | #使用未定义的变量要报 notice 的 |
58 | echo $novar ; |
59 | #除以0要报警告的 |
60 | echo 3/0; |
61 | #自定义一个错误 |
62 | trigger_error ( 'Trigger a fatal error' ,E_USER_ERROR); |
相关文章推荐
- Cassandra工具:cqlsh(the cql shell)
- 微信小程序初识
- CentOS7.2下安装pdf2htmlEX
- sip扩展综述
- 蓝桥杯-字母图形
- caffe增加自己的layer实战(下)--caffe学习(12)
- 玩转linux主机--centos设置宽带pppoe上网
- linux下socket编程
- MVC上传文件目录至共享目录
- Mysql用户忘记密码及密码过期问题的处理方法
- @Transactional注解事务不回滚不起作用无效
- IOS调试的时候无dSYM 出现crash如何分析
- spring 前缀后缀
- Android自定义控件:饼状图
- 一个强大的linux命令——find之exec
- 文档解析之JSON文档的读取
- SSRS生成报表
- Nuget安装包指定版本
- Understanding Primitive Access
- mysql date_time字段相加