• 售前

  • 售后

热门帖子
入门百科

PHP自界说错误处理处罚的方法分析

[复制链接]
清风吹袭断 显示全部楼层 发表于 2021-10-26 13:13:54 |阅读模式 打印 上一主题 下一主题
本文实例讲述了PHP自界说错误处置处罚的方法。分享给大家供大家参考,详细如下:
自界说错误陈诉的处置处罚方式,可以完全绕过标准的PHP错误处置处罚函数,如许就可以按照自己界说的格式打印错误陈诉,或改变错误陈诉打印的位置(标准PHP的错误陈诉是那里发生错误就在发生位置处表现)。以下几种情况可以思量自界说错误处置处罚。
★可以记下错误的信息,及时发现一些生产环境出现的问题。
★可以用来屏蔽错误。出现错误会把一些信息暴漏给用户,极有可能成为黑客攻击你网站的工具。
★可以做相应的处置处罚,将所有错误陈诉放到脚本末了输出,或堕落时可以表现跳转到预先界说好的堕落页面,提供更好的用户体验,如果须要,还可以在自界说错误处置处罚程序中,根据情况去制止脚本运行。
★可以作为调试工具,一些时间必须在运行环境时调试一些东西,但又不想影响正在利用的用户。
通常利用
  1. set_error_handler()
复制代码
函数去设置用户自界说的错误处置处罚函数,该函数用于创建运行时期间的用户自己的错误处置处罚方法,返回旧的错误处置处罚程序,若失败,则返回null。该函数有两个参数,其中第一个参数是必选的,需要一个回调函数,规定发生错误时运行的函数。这个回调函数一定要声明4个参数,否则无效,按顺序分别为“是否存在错误”、“错误信息”、“错误文件”和“错误行号”。
  1. set_error_handler()
复制代码
函数的第二个参数则为可选的,规定现在哪个错误陈诉级别会表现用户自界说的错误。默认是“E_ALL”。自界说错误处置处罚的示比方下所示:
  1. <?php
  2. error_reporting(0); //屏蔽程序中的错误
  3. //定义Error_Handler函数,作为set_error_handler()函数的第一个参数“回调”
  4. function error_handler($error_level,$error_message,$file,$line){
  5. $EXIT =FALSE;
  6. switch($error_level){
  7. //提醒级别
  8. case E_NOTICE:
  9. case E_USER_NOTICE:
  10. $error_type = 'Notice';
  11. break;
  12. //警告级别
  13. case E_WARNING:
  14. case E_USER_WARNING:
  15. $error_type='warning';
  16. break;
  17. //错误级别
  18. case E_ERROR:
  19. case E_USER_ERROR:
  20. $error_type='Fatal Error';
  21. $EXIT = TRUE;
  22. break;
  23. //其他未知错误
  24. default:
  25. $error_type='Unknown';
  26. $EXIT = TRUE;
  27. break;
  28. }
  29. //直接打印错误信息,也可以写文件,写数据库,反正错误信息都在这,任你发落
  30. printf("<font color='#FF0000'><b>%s</b></font>:%s in<b>%s</b> on line <b>%d</b><br>\n",$error_type, $error_message, $file, $line);
  31. //如果错误影响到程序的正常执行,跳转到友好的错误提示页面
  32. if (TURE==$EXIT){
  33. echo '<script>location = "err.html";</scrpit>';
  34. }
  35. }
  36. //这个才是关键点,把错误的处理交给error_handle()
  37. set_error_handler('error_handler');
  38. //使用未定义的变量要报notice的
  39. echo $novar;
  40. //除以0要报警告的
  41. echo 3/0;
  42. //自定义一个错误
  43. trigger_error('Trigger a fatal error',E_USER_ERROR);
  44. ?>
复制代码
本例所有打印的错误陈诉都是按自己界说的格式输出的,不外有一点,体系直接报Fatal Error的这里捕捉不到,因为体系不可能把这么重大的错误教给你处置处罚。遇到这种错误是必须要办理的,以是体系会直接制止程序运行。利用
  1. set_error_handler()
复制代码
函数可以很好地办理安全和调试方便的矛盾,而且你还可以花点心思,使错误提示更加雅观以共同网站的风格。不外要注意两点。
E_ERRORE_PARSEE_CORE_ERRORE_CORE_WARNINGE_COMPILE_ERRORE_COMPILE_WARNING是不会被这个句柄处置处罚的,也就是会用最原始的方式表现出来。不外出现这些错误都是编译或PHP内核堕落,在通常情况下不会发生。
②利用
  1. set_error_handler()
复制代码
后,
  1. error_reporting()
复制代码
将会失效。也就是所有的错误(除上述的错误)都会教给自己界说的函数处置处罚。
更多关于PHP相干内容感爱好的读者可查看本站专题:《PHP错误与异常处置处罚方法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操纵本领大全》、《PHP根本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操纵入门教程》及《php常见数据库操纵本领汇总》
希望本文所述对大家PHP程序设计有所资助。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作