set_error_handler() 顾名思义,自定义错误的处理

  一个很有用的函数, set_error_handler() 顾名思义,自定义错误的处理。很有用的函数:

  1. 可以用来屏蔽错误。 出现错误一来会把一些信息暴漏给用户,极有可能成为黑客攻击你网站的工具。 二来让用户觉得你的水平很挫。
  2. 可以记下错误的信息, 及时发现一些生产环境的出现的问题。
  3. 可以做相应的处理, 出错的时候可以显示跳转到预先定义好的出错页面,提供更好的用户体验。 
  4. 可以作为调试工具, 一些时候必须在生产环境调试一些东西, 但又不想影响正在使用的用户。
  5. 。。。。
    废话不多说, 上代码:

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值