加入收藏 | 设为首页 | 会员中心 | 我要投稿 成都站长网 (https://www.028zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP错误处理及调试.PDF 27页

发布时间:2022-12-13 14:36:47 所属栏目:PHP教程 来源:网络
导读: PHP程序设计基础教程PHP错误处理及调试谢宏伟 ? 目录错误处理概述如何处理错误异常处理PHP调试技术 6.1 错误处理概述? 6.1.1常见的错误类型错误处理的意义在使用PHP编写Web应用程序时,经常

PHP程序设计基础教程PHP错误处理及调试谢宏伟 ? 目录错误处理概述如何处理错误异常处理PHP调试技术 6.1 错误处理概述? 6.1.1常见的错误类型错误处理的意义在使用PHP编写Web应用程序时,经常会遇到各种各样的错误,这时就需要相应的解决方法,错误处理是代码编写的一个重要部分。如果代码中缺少错误检查,程序看上去会很不专业,并且程序会存在很多安全隐患。使用恰当的方法处理调试错误,是我们开发路上的一把利器。 6.1 错误处理概述? 6.1.1常见的错误类型在PHP中,错误用于指出语法、环境或编程问题。根据错误出现在编程过程中的不同环节,大致可以分为四类,具体如下:1、语法错误语法错误是指编写的代码不符合PHP的编写规范。语法错误最常见,也最容易修复,例如,遗漏了一个分号,就会显示错误信息。这类错误会阻止PHP脚本执行,通常发生在程序开发时,可以通过错误报告进行修复,再重新运行检查。 6.1 错误处理概述? 6.1.1常见的错误类型2、运行错误运行错误一般不会阻止PHP脚本的执行,但是会阻止脚本做希望它做的任何事情,例如,在调用header()函数前如果有字符输出,PHP通常会显示一条错误信息。

虽然PHP脚本继续执行,但header()函数并没有执行成功。3、逻辑错误逻辑错误是最让人头疼的,不但不会阻止PHP脚本的执行,也不会显示出错误信息。例如,在if语句中判断两个变量的值是否相等。如果错把比较运算符 “==”写成赋值运算符 “=”就是一种逻辑错误,很难被发现。 6.1 错误处理概述? 6.1.1常见的错误类型4、环境错误环境错误是由于PHP开发环境配置的问题引起的代码报错,例如用PHP画了一个五角星的图形。如果PHP扩展中却没有加载GD库,这样PHP脚本执行时的报错就是环境错误。处理错误的两种方法? 标准PHP错误报告标准PHP错误报告能够处理所有类型的错误,但是通常情况下,它只适用于PHP5之前的版本。? 异常处理异常处理被用于表示发生了一个异常事件并中断正常执行的脚本。 6.1 错误处理概述? 6.1.2 错误级别PHP中的错误不仅有多种类型,并且每个错误都有一个错误级别与之关联,用于表示当前错误的等级。接下来,列举一些PHP中常见的错误级别,具体如下表所示。级别常量值描述E_ERROR1 致命的运行时错误,这类错误不可恢复,导致脚本停止运行E_WARNNING2 运行时警告,仅给出提示信息,但是脚本不会终止运行E_PARSE4 编译时语法解析错误,解析错误仅仅由分析器产生E_NOTICE8 运行时通知,表示脚本遇到可能会表现为错误的情况E_CORE_ERROR16 类似E_ERROR,是由PHP引擎核心产生的E_CORE_WANNINT 32 类似E_WARNING,是由PHP引擎核心产生的E_COMPILE_ERROR 64 类似E_ERROR, 是由Zend脚本引擎产生的E_COMPILE_WANNING 128 类似E_WARNING,是由Zend脚本引擎产生的E_USER_ERROR256 类似E_ERROR, 由用户自己在代码中使用trigger_error()来产生的E_USER_WANNING512 由用户自己在代码中使用trigger_error()来产生的E_USER_NOTICE1024 类似E_NOTICE,由用户自己在代码中使用trigger_error()来产生的E_STRICT2048 启用PHP对代码的修改建议,确保代码具有互操作性和向前兼容性E_ALL30719 E_STRICT除外的所有错误和警告信息 6.1 错误处理概述? 6.1.3 手动触发错误在PHP中,可以根据不同的需求自定义错误,它们可以用于协助调试、在发布给其他人的代码中生成不推荐使用的通知。

在程序开发中,可以使用PHP的内置函数trigger_error()来触发错误,该函数声明如下:bool trigger_error( string $error_msg [, int $error_type =E_USER_NOTICE ] )在上述声明中,第一个参数是错误信息内容,第二个参数是错误类别,默认为E_UESR_NOTICE。 6.2 如何处理错误? 6.2.1显示错误报告在PHP中实现显示错误的机制有以下几种方式:1、修改配置文件通过直接配置php.ini文件来实现显示错误报告,代码如下所示:error_reporting(E_ALL & ~E_NOTICE);display_errors = on;上述代码中,error_reporting用于设置错误级别,display_errors用于设置是否显示错误报告。第1行代码中E_ALL & ~E_NOTICE表示显示除E_NOTICE之外的所有级别错误,第1行表示显示错误报告。 6.2 如何处理错误? 6.2.1显示错误报告2、error_reporting()和ini_set()函数通过PHP语言提供的error_reporting()和ini_set()函数来实现显示错误报告,代码如下所示:上述代码中,ini_set()函数用来设置错误信息是否显示,error_reporting()函数用于设置错误级别。

第2行表示显示除E_NOTICE之外的所有级别错误,第3行表示显示错误信息。 6.2 如何处理错误? 6.2.1 显示错误报告3、die()函数die()函数可以用来自定义输出错误信息,常用于业务逻辑的错误显示。注意:使用函数控制的方式只对当前脚本有效,而配置php.ini文件对所有脚本都有效。 6.2 如何处理错误? 6.2.2 记录错误日志在PHP中记录错误日志,有以下几种方式:1、修改配置文件通过修改php.ini配置文件,可以直接设置记录错误日志的相关信息,具体代码如下所示:error_reporting = E_ALLlog_error = Onerror_log = /tmp/php_errors.log上述代码中,error_reporting用于设置显示错误级别,E_ALL表示显示所有错误,log_error用于设置是否记录日志,error_log用于指定日志写入的文件路径。 6.2 如何处理错误? 6.2.2 记录错误日志2、error_log()函数error_log()函数用于将错误记录到指定的日志文件中或发送电子邮件到指定地址,其函数声明如下:bool error_log ( string $message [, int $message_type = 0 [,string $destination [, string $extra_headers ]]] )上述声明中,$message表示要记录的错误信息。

参数$message_type表示消息类型,该参数有两个值0或1,0表示发送到服务器地址,1表示使用mail()函数发送到指定邮件地址。$destination表示错误日志记录的位置,$extra_headers表示额外的头,当$message_type=1时才会使用。 6.2 如何处理错误? 6.2.3自定义错误处理器自定义错误处理器是通过set_error_handler()函数来实现的,其函数声明如下:mixed set_error_handler( callable $error_handler [, int$error_types = E_ALL | E_STRICT ])上述声明中,callable表示该参数$error_handler为回调函数类型。$error_handler是必须定义的参数,表示发生错误时运行的函数。$error_types用于指定处理错误的级别类型。 6.2 如何处理错误? 6.2.3自定义错误处理器error_handler参数在上述声明中error_handler参数必须符合错误处理器函数的原型,原型如下所示:function handler(int $errno , string $errstr [, string $errfile [,int $errline [, array $errcontext ]]]);上述代码中,参数$errno表示错误级别,$errstr表示错误说明,$errfile表示发生错误代码的文件名称,errline表示错误发生的代码行的行号,$errcontext表示在触发错误的范围内存在的所有变量的数组。

其中前两个参数是必填参数。 6.3 异常处理? 6.3.1 异常的概述在PHP5中加入了异常处理机制,它与错误的区别在于异常定义了程序中遇到的非致命的错误。例如,程序运行时磁盘空间不足,网络连接中断,被操作的文件不存在等。在处理这些异常前,需要先获取异常信息,才能推断程序中的错误所在。 6.3 异常处理? 6.3.2 异常的处理在PHP中可以通过throw关键字来抛出一个异常,如果要捕获和处理异常需要try…catch代码块来完成。 6.3 异常处理? 6.3.3自定义异常虽然PHP5提供的异常处理类Exception具备常用的一些功能。但有时候我们希望使用不同的异常类,针对特定类型的异常进行处理,此时就需要创建一个自定义异常类。自定义异常类非常简单,只需要继承自Exception 类,并添加自定义的成员属性和方法即可。 6.3 异常处理? 6.3.4多个catch块在实际运用中,我们也可以为一段脚本使用多个异常,来检测多种情况。也就是说一个try语句对应于多个catch语句。在脚本中可以使用多个if...else代码块,或一个switch代码块,或者嵌套多个异常。这些异常能够使用不同的异常类,并返回不同的错误消息。

6.3 异常处理? 6.3.5 设置顶层处理器顶层处理器的概念在实际开发中,为了保证程序正常运行,需要在所有可能出现异常的地方进行异常监视,但是程序出现异常的地方是无法预料的,为了保证程序的正常运行,PHP提供了set_exception_handler()函数用于对这些没有进行异常监视的异常进行处理,该函数也称为顶层异常处理器。顶层异常处理器用于没有用try/catch块来捕获的异常,该函数声明如下所示:callable set_exception_handler( callable $exception_handler ) 6.4 PHP调试技术? 6.4.1 使用输出函数进行调试PHP中提供了一系列输出函数,如print()、echo()、print_r()和var_dump() ,这些输出函数不仅可以在程序中输出信息,还可用于简单的调试。1、print()print()函数用于输出字符串,其语法格式如下:int print( string $arg )print()函数非常简单,只接收一个参数$argPHP错误处理,用于指定输出的字符串。 6.4 PHP调试技术? 6.4.1 使用输出函数进行调试2、echo()echo()函数用于输出一个或多个字符串,其语法格式如下:void echo( string $arg1 [, string $... ] )此函数可以接收一个或多个字符串类型参数,用于完成字符串输出功能。

需要注意的是,echo()函数与print()函数功能类似,只不过执行效率比print()函数快。3、print_r()print_r()函数用于打印一个变量易于理解的信息,其语法格式如下:bool print_r( mixed $expression [, bool $return ] ) 6.4 PHP调试技术? 6.4.1 使用输出函数进行调试4、var_dump()var_dump()函数用于打印变量的相关信息,其语法格式如下:void var_dump( mixed $expression [, mixed $expression [,$... ]] )此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。如果是数组则通过递归的方式展开值,并缩进显示其结构。 6.4 PHP调试技术? 6.4.2 使用文件记录进行调试使用输出函数进行调试只适用于比较简单的程序代码,有时需要得到程序运行过程中的一些信息,但又不想让程序停下来,例如,处理循环语句。针对这个情况,PHP提供了一个函数file_put_contents() ,该函数可以将程序的相关信息记录到某个文件中。

这样程序中出现过的错误或是警告等信息就会保存在文件中,方便以后进行信息的追溯。file_put_contents() 函数的声明方式如下:int file_put_contents( string $filename , mixed $data [, int $flags= 0 [, resource $context ]] ) 6.4 PHP调试技术? 6.4.3 使用Xdebug进行调试当程序功能很复杂而且代码很多时,如果手动调试就比较繁琐。此时,就需要一个功能强大的调试工具Xdebug 。Xdebug工具是一个开放源代码的PHP程序调试器,即一个Debug工具,用来调试和分析程序的运行状况。 ? 本章小结? 本章首先介绍了错误处理的基本概念,常见的错误级别及如何触发错误,随后重点讲解了处理错误的几种常见方式以及异常处理,在异常处理方面,讲解了异常的概念、自定义异常、多个异常、设置顶层异常处理器,最后讲解了PHP中的调试技术。? 通过本章的学习,读者可以掌握如何调试错误并解决错误。谢谢大家 2016/12/26

(编辑:成都站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!