错误调试与异常处理

上传人:s9****2 文档编号:568714920 上传时间:2024-07-26 格式:PPT 页数:23 大小:231.83KB
返回 下载 相关 举报
错误调试与异常处理_第1页
第1页 / 共23页
错误调试与异常处理_第2页
第2页 / 共23页
错误调试与异常处理_第3页
第3页 / 共23页
错误调试与异常处理_第4页
第4页 / 共23页
错误调试与异常处理_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《错误调试与异常处理》由会员分享,可在线阅读,更多相关《错误调试与异常处理(23页珍藏版)》请在金锄头文库上搜索。

1、第十三章第十三章 错误调试与异常处理错误调试与异常处理本章目标本章目标v掌握调试策略掌握调试策略v掌握错误报告的设置掌握错误报告的设置v掌握错误检测和错误记录掌握错误检测和错误记录v掌握异常处理和异常规则掌握异常处理和异常规则本章内容本章内容13.313.3异常处理异常处理13.213.2PHPPHP错误报告错误报告13.113.1调试策略调试策略13.1调试策略调试策略vv调试是确定错误根本原因并纠正此错误的过程调试是确定错误根本原因并纠正此错误的过程调试是确定错误根本原因并纠正此错误的过程调试是确定错误根本原因并纠正此错误的过程vv编写程序难免会出现一些错误,包括逻辑错误和语编写程序难免会

2、出现一些错误,包括逻辑错误和语编写程序难免会出现一些错误,包括逻辑错误和语编写程序难免会出现一些错误,包括逻辑错误和语法错误,了解科学的调试方法可以节省大量时间法错误,了解科学的调试方法可以节省大量时间法错误,了解科学的调试方法可以节省大量时间法错误,了解科学的调试方法可以节省大量时间vv调试应该遵循下面步骤调试应该遵循下面步骤调试应该遵循下面步骤调试应该遵循下面步骤 将错误状态稳定下来将错误状态稳定下来将错误状态稳定下来将错误状态稳定下来 确定错误的来源确定错误的来源确定错误的来源确定错误的来源 收集产生错误的相关数据收集产生错误的相关数据收集产生错误的相关数据收集产生错误的相关数据 分析所

3、以收集的数据,并构造对错误假设分析所以收集的数据,并构造对错误假设分析所以收集的数据,并构造对错误假设分析所以收集的数据,并构造对错误假设 确定怎么去证实或证明这个假设,可以对程序进行测试或通过确定怎么去证实或证明这个假设,可以对程序进行测试或通过确定怎么去证实或证明这个假设,可以对程序进行测试或通过确定怎么去证实或证明这个假设,可以对程序进行测试或通过检查代码检查代码检查代码检查代码 对假设做出正确结论对假设做出正确结论对假设做出正确结论对假设做出正确结论 备份程序备份程序备份程序备份程序 修补错误修补错误修补错误修补错误 对所修补的代码进行测试对所修补的代码进行测试对所修补的代码进行测试对

4、所修补的代码进行测试 查找是否还有类似错误查找是否还有类似错误查找是否还有类似错误查找是否还有类似错误13.1调试策略(续)调试策略(续)v调试手段调试手段增加中间变量或跟踪变量增加中间变量或跟踪变量增加中间变量或跟踪变量增加中间变量或跟踪变量注释掉部分代码注释掉部分代码注释掉部分代码注释掉部分代码通过调试器调试通过调试器调试通过调试器调试通过调试器调试vPHP中有效却很基本的调试技术为中有效却很基本的调试技术为打开错误报告打开错误报告打开错误报告打开错误报告使用使用使用使用printprint语句语句语句语句13.2PHP错误报告错误报告v错误报告设置错误报告设置v错误检测错误检测v错误记录

5、错误记录13.2.1错误报告设置错误报告设置v通过通过php.ini文件设置文件设置PHPPHP中的许多配置设置都通过中的许多配置设置都通过中的许多配置设置都通过中的许多配置设置都通过php.iniphp.ini文件完成,文件完成,文件完成,文件完成,错误报告也在错误报告也在错误报告也在错误报告也在php.iniphp.ini文件中的设置文件中的设置文件中的设置文件中的设置在调试在调试在调试在调试PHPPHP应用程序时,应当知道两个配置变应用程序时,应当知道两个配置变应用程序时,应当知道两个配置变应用程序时,应当知道两个配置变量量量量 error_reportingerror_reportin

6、g:表示控制输出到用户端的消息种:表示控制输出到用户端的消息种:表示控制输出到用户端的消息种:表示控制输出到用户端的消息种类。默认值为类。默认值为类。默认值为类。默认值为E_ALLE_ALL,表示输出所有错误信息,表示输出所有错误信息,表示输出所有错误信息,表示输出所有错误信息 display_errorsdisplay_errors:表示设置是否将:表示设置是否将:表示设置是否将:表示设置是否将error_reportingerror_reporting中中中中设置的错误信息输出到用户端,设置的错误信息输出到用户端,设置的错误信息输出到用户端,设置的错误信息输出到用户端,onon表示显示,表

7、示显示,表示显示,表示显示,OffOff(默认值)表示不显示(默认值)表示不显示(默认值)表示不显示(默认值)表示不显示13.2.1错误报告设置(续)错误报告设置(续)v通过运行时函数设置通过运行时函数设置error_reporting()error_reporting()函数函数函数函数 在运行时设置在运行时设置在运行时设置在运行时设置error_reportingerror_reporting指令指令指令指令int error_reporting ( int level )int error_reporting ( int level )ini_set()ini_set()函数函数函数函数

8、 设置设置设置设置php.iniphp.ini文件配置选项的值。该值只在脚本执行文件配置选项的值。该值只在脚本执行文件配置选项的值。该值只在脚本执行文件配置选项的值。该值只在脚本执行时生效,脚本结束后恢复原值时生效,脚本结束后恢复原值时生效,脚本结束后恢复原值时生效,脚本结束后恢复原值string ini_set ( string varname , string newvalue )string ini_set ( string varname , string newvalue )ini_get()ini_get()函数函数函数函数 获取配置选项的值获取配置选项的值获取配置选项的值获取配置

9、选项的值string ini_get ( string varname )string ini_get ( string varname )13.2.2错误检测错误检测v在创建脚本和在创建脚本和Web应用程序时,错误处理是应用程序时,错误处理是一个重要的部分一个重要的部分v在在PHP中一些最为重要的错误检测方法中一些最为重要的错误检测方法简单的简单的简单的简单的“ “die()”die()”语句语句语句语句自定义错误和错误触发器自定义错误和错误触发器自定义错误和错误触发器自定义错误和错误触发器错误报告错误报告错误报告错误报告13.2.2错误检测(续)错误检测(续)v使用使用die()函数函数d

10、ie()die()函数是相当于应用程序的函数是相当于应用程序的函数是相当于应用程序的函数是相当于应用程序的exit()exit()函数,表示函数,表示函数,表示函数,表示终止脚本运行终止脚本运行终止脚本运行终止脚本运行v创建自定义错误处理器创建自定义错误处理器可以创建一个专用函数,在可以创建一个专用函数,在可以创建一个专用函数,在可以创建一个专用函数,在PHPPHP中发生错误时中发生错误时中发生错误时中发生错误时调用该函数调用该函数调用该函数调用该函数error_function_name(error_level,error_message,errorerror_function_name(e

11、rror_level,error_message,error_file,error_line,error_context)_file,error_line,error_context)13.2.2错误检测(续)错误检测(续)v设置错误处理程序(设置错误处理程序(Set_Error_Handler函函数)数)mixed set_error_handler ( callback error_handler mixed set_error_handler ( callback error_handler , int error_types = E_ALL | E_STRICT ), int erro

12、r_types = E_ALL | E_STRICT )v触发错误(触发错误(trigger_error函数)函数)bool trigger_error ( string error_msg , int bool trigger_error ( string error_msg , int error_type = E_USER_NOTICE )error_type = E_USER_NOTICE )生成一个用户级的错误生成一个用户级的错误生成一个用户级的错误生成一个用户级的错误/ /警告警告警告警告/ /通知消息,来触发通知消息,来触发通知消息,来触发通知消息,来触发这个用户错误这个用户错误

13、这个用户错误这个用户错误13.2.3错误记录错误记录v根据在根据在php.ini中的中的log_errors和和error_log配配置,置,PHP向服务器的错误记录系统或文件向服务器的错误记录系统或文件发送错误记录发送错误记录v通过使用通过使用error_log()函数,可以向指定的文函数,可以向指定的文件或远程目的地发送错误记录件或远程目的地发送错误记录v通过电子邮件向自己发送错误消息,是一通过电子邮件向自己发送错误消息,是一种获得指定错误的通知的好办法种获得指定错误的通知的好办法13.2.3错误记录(续)错误记录(续)v设置开启错误记录设置开启错误记录log_errorslog_erro

14、rs表示是否开启错误记录表示是否开启错误记录表示是否开启错误记录表示是否开启错误记录error_logerror_log表示错误记录文件存储的位置和文件表示错误记录文件存储的位置和文件表示错误记录文件存储的位置和文件表示错误记录文件存储的位置和文件名名名名v将错误信息存入错误记录文件需要使用将错误信息存入错误记录文件需要使用error_log()函数函数bool error_log(string message,int bool error_log(string message,int message_type=0,string destination,string message_type=

15、0,string destination,string extra_headers)extra_headers)13.3异常处理异常处理v什么是异常什么是异常v异常的基本使用异常的基本使用v创建一个自定义的创建一个自定义的Exception类类v多个异常多个异常v重新抛出异常重新抛出异常v设置顶层异常处理器设置顶层异常处理器v异常的规则异常的规则13.3.1什么是异常什么是异常vv异常处理用于在指定的错误(异常)情况发生时改异常处理用于在指定的错误(异常)情况发生时改异常处理用于在指定的错误(异常)情况发生时改异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程变脚本的正常流程变脚本的

16、正常流程变脚本的正常流程vv当异常被触发时,通常会发生当异常被触发时,通常会发生当异常被触发时,通常会发生当异常被触发时,通常会发生 当前代码状态被保存当前代码状态被保存当前代码状态被保存当前代码状态被保存 代码执行被切换到预定义的异常处理器函数代码执行被切换到预定义的异常处理器函数代码执行被切换到预定义的异常处理器函数代码执行被切换到预定义的异常处理器函数 根据情况,处理器也许会从保存的代码状态重新开始根据情况,处理器也许会从保存的代码状态重新开始根据情况,处理器也许会从保存的代码状态重新开始根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继执行代码

17、,终止脚本执行,或从代码中另外的位置继执行代码,终止脚本执行,或从代码中另外的位置继执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本续执行脚本续执行脚本续执行脚本 vv不同的错误处理方法不同的错误处理方法不同的错误处理方法不同的错误处理方法 异常的基本使用异常的基本使用异常的基本使用异常的基本使用 创建自定义的异常处理器创建自定义的异常处理器创建自定义的异常处理器创建自定义的异常处理器 多个异常多个异常多个异常多个异常 重新抛出异常重新抛出异常重新抛出异常重新抛出异常 设置顶层异常处理器设置顶层异常处理器设置顶层异常处理器设置顶层异常处理器 13.3.2异常的基本使用异常的基本使用v当

18、异常被抛出时,其后的代码不会继续执当异常被抛出时,其后的代码不会继续执行,行,PHP 会尝试查找匹配的会尝试查找匹配的“catch”代码代码块块v如果异常没有被捕获,而且又没用使用如果异常没有被捕获,而且又没用使用set_exception_handler()作相应的处理的话,那么将发生一个严重作相应的处理的话,那么将发生一个严重的错误(致命错误),并且输出的错误(致命错误),并且输出“Uncaught Exception”(未捕获异常)的(未捕获异常)的错误消息错误消息13.3.2异常的基本使用(续)异常的基本使用(续)v异常处理程序应当包括异常处理程序应当包括try - try - 使用异

19、常的函数应该位于使用异常的函数应该位于使用异常的函数应该位于使用异常的函数应该位于 try try 代码块内代码块内代码块内代码块内- - 这里规定如何触发异常这里规定如何触发异常这里规定如何触发异常这里规定如何触发异常catch - catch catch - catch 代码块会捕获异常,并创建一代码块会捕获异常,并创建一代码块会捕获异常,并创建一代码块会捕获异常,并创建一个包含异常信息的对象个包含异常信息的对象个包含异常信息的对象个包含异常信息的对象 13.3.3创建一个自定义的创建一个自定义的Exception类类v创建自定义的异常处理程序非常简单。我创建自定义的异常处理程序非常简单。

20、我们简单地创建了一个专门的类,当们简单地创建了一个专门的类,当 PHP 中中发生异常时,可调用其函数发生异常时,可调用其函数v该类必须是该类必须是 exception 类的一个扩展类的一个扩展v这个自定义的这个自定义的 exception 类继承了类继承了 PHP 的的 exception 类的所有属性,可向其添加自定类的所有属性,可向其添加自定义的函数义的函数13.3.4多个异常多个异常v可以为一段脚本使用多个异常,来检测多可以为一段脚本使用多个异常,来检测多种情况种情况v使用多个使用多个 if.else 代码块,或一个代码块,或一个 switch 代代码块,或者嵌套多个异常码块,或者嵌套多

21、个异常v这些异常能够使用不同的这些异常能够使用不同的 exception 类,并类,并返回不同的错误消息返回不同的错误消息13.3.5重新抛出异常重新抛出异常v有时,当异常被抛出时,您也许希望以不有时,当异常被抛出时,您也许希望以不同于标准的方式对它进行处理同于标准的方式对它进行处理v可以在一个可以在一个 catch 代码块中再次抛出异常代码块中再次抛出异常v脚本应该对用户隐藏系统错误。对程序员脚本应该对用户隐藏系统错误。对程序员来说,系统错误也许很重要,但是用户对来说,系统错误也许很重要,但是用户对它们并不感兴趣它们并不感兴趣v为了让用户更容易使用,可以再次抛出带为了让用户更容易使用,可以再

22、次抛出带有对用户比较友好的消息的异常有对用户比较友好的消息的异常13.3.6设置顶层异常处理器设置顶层异常处理器vset_exception_handler() 函数可设置处理所函数可设置处理所有未捕获异常的用户定义函数有未捕获异常的用户定义函数13.3.7异常的规则异常的规则v需要进行异常处理的代码应该放入需要进行异常处理的代码应该放入 try 代码代码块内,以便捕获潜在的异常块内,以便捕获潜在的异常 v每个每个 try 或或 throw 代码块必须至少拥有一个代码块必须至少拥有一个对应的对应的 catch 代码块代码块 v使用多个使用多个 catch 代码块可以捕获不同种类的代码块可以捕获

23、不同种类的异常异常 v可以在可以在 try 代码块内的代码块内的 catch 代码块中再次代码块中再次抛出(抛出(re-thrown)异常)异常 v如果抛出了异常,就必须捕获它如果抛出了异常,就必须捕获它本章总结本章总结v运用调试策略进行代码调试运用调试策略进行代码调试运用调试策略进行代码调试运用调试策略进行代码调试v通过通过通过通过php.iniphp.ini文件设置错误报告文件设置错误报告文件设置错误报告文件设置错误报告v通过运行时函数设置错误报告通过运行时函数设置错误报告通过运行时函数设置错误报告通过运行时函数设置错误报告v错误检测机制(错误检测机制(错误检测机制(错误检测机制(die(

24、)die()函数、自定义错误处理函数、函数、自定义错误处理函数、函数、自定义错误处理函数、函数、自定义错误处理函数、set_error_handlerset_error_handler() ()函数、函数、函数、函数、tigger_error()tigger_error()函数)函数)函数)函数)v消息记录的设置(消息记录的设置(消息记录的设置(消息记录的设置(log_errorslog_errors和和和和error_logerror_log配置)和配置)和配置)和配置)和写入(写入(写入(写入(error_log()error_log()函数)函数)函数)函数)v异常处理和异常规则异常处理和异常规则异常处理和异常规则异常处理和异常规则vtrytry、chatchchatch和和和和throwthrow的运用的运用的运用的运用v自定义自定义自定义自定义ExceptionException类类类类

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号