PHP用set_error_handler()拦截程序中的错误
作者:JeffJing 发布:2011-05-30 08:05 围观:16,903 views
1条评论
一个很有用的函数, set_error_handler() 顾名思义,自定义错误的处理。很有用的函数:
- 可以用来屏蔽错误。 出现错误一来会把一些信息暴漏给用户,极有可能成为黑客攻击你网站的工具。 二来让用户觉得你的水平很挫。
- 可以记下错误的信息, 及时发现一些生产环境的出现的问题。
- 可以做相应的处理, 出错的时候可以显示跳转到预先定义好的出错页面,提供更好的用户体验。
- 可以作为调试工具, 一些时候必须在生产环境调试一些东西, 但又不想影响正在使用的用户。
- 。。。。
废话不多说, 上代码:
09 | * @param $error_level 错误级别 |
10 | * @param $error_message 错误信息 |
15 | function error_handler ( $error_level , $error_message , $file , $line ) { |
19 | switch ( $error_level ) { |
23 | $error_type = 'Notice' ; |
29 | $error_type = 'Warning' ; |
35 | $error_type = 'Fatal Error' ; |
41 | $error_type = 'Unknown' ; |
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 ); |
48 | //错误影响到程序的正常执行的话跳转到友好的错误提示页面 |
50 | echo "<script language='Javascript'>location='err.html'; </script>" ; |
54 | //这个才是关键点, 把错误的处理交给 error_handler() |
55 | set_error_handler ( 'error_handler' ); |
62 | trigger_error ( 'Trigger a fatal error' , E_USER_ERROR); |