




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十三第十三章章 错误错误调试与调试与异常处理异常处理 2北京万博天地网络技术股份有限公司 版权所有 本章目标本章目标 vv掌握掌握调试策略调试策略 vv掌握掌握错误报告的设置错误报告的设置 vv掌握掌握错误检测和错误记录错误检测和错误记录 vv掌握掌握异常处理和异常异常处理和异常规则规则 3北京万博天地网络技术股份有限公司 版权所有 本章内容本章内容 13.313.3 异常处理 异常处理 13.213.2 PHPPHP错误报告错误报告 13.113.1 调试策略 调试策略 4北京万博天地网络技术股份有限公司 版权所有 13.113.1 调试 调试策略策略 vv调试是确定错误根本原因并纠正此错误的调试是确定错误根本原因并纠正此错误的过程过程 vv编写编写程序难免会出现一些错误,包括逻辑错误和语程序难免会出现一些错误,包括逻辑错误和语 法错误,了解科学的调试方法可以节省大量法错误,了解科学的调试方法可以节省大量时间时间 vv调试调试应该遵循下面应该遵循下面步骤步骤 将将错误状态稳定错误状态稳定下来下来 确定确定错误的错误的来源来源 收集收集产生错误的相关产生错误的相关数据数据 分析分析所以收集的数据,并构造对错误所以收集的数据,并构造对错误假设假设 确定确定怎么去证实或证明这个假设,可以对程序进行测试或通过怎么去证实或证明这个假设,可以对程序进行测试或通过 检查检查代码代码 对对假设做出正确假设做出正确结论结论 备份程序备份程序 修补错误修补错误 对对所修补的代码进行所修补的代码进行测试测试 查找查找是否还有类似是否还有类似错误错误 5北京万博天地网络技术股份有限公司 版权所有 13.113.1 调试策略(续) 调试策略(续) vv调试手段调试手段 增加中间变量或跟踪变量增加中间变量或跟踪变量 注释掉部分代码注释掉部分代码 通过调试器调试通过调试器调试 vvPHPPHP中有效却很基本的调试技术为中有效却很基本的调试技术为 打开错误报告打开错误报告 使用使用printprint语句语句 6北京万博天地网络技术股份有限公司 版权所有 13.213.2 PHPPHP错误错误报告报告 vv错误错误报告设置报告设置 vv错误检测错误检测 vv错误记录错误记录 7北京万博天地网络技术股份有限公司 版权所有 13.2.113.2.1 错误报告设置 错误报告设置 vv通过通过php.iniphp.ini文件设置文件设置 PHPPHP中的许多配置设置都通过中的许多配置设置都通过php.iniphp.ini文件文件完成完成 ,错误,错误报告也在报告也在php.iniphp.ini文件中的文件中的设置设置 在在调试调试PHPPHP应用程序时,应当知道两个配置应用程序时,应当知道两个配置变变 量量 error_reportingerror_reporting:表示控制输出到用户端的消息种:表示控制输出到用户端的消息种 类。默认值为类。默认值为E_ALLE_ALL,表示输出所有错误信息,表示输出所有错误信息 display_errorsdisplay_errors:表示设置是否将:表示设置是否将error_reportingerror_reporting中中 设置的错误信息输出到用户端,设置的错误信息输出到用户端,onon表示显示,表示显示,OffOff( 默认值)表示不显示默认值)表示不显示 8北京万博天地网络技术股份有限公司 版权所有 13.2.113.2.1 错误报告设置(续) 错误报告设置(续) vv通过运行时函数设置通过运行时函数设置 error_reporting()error_reporting()函数函数 在在运行时设置运行时设置error_reportingerror_reporting指令指令 int int error_reporting ( int level )error_reporting ( int level ) ini_set()ini_set()函数函数 设置设置php.iniphp.ini文件配置选项的值。该值只在脚本执行文件配置选项的值。该值只在脚本执行 时生效,脚本结束后恢复原时生效,脚本结束后恢复原值值 string ini_set ( string varname , string newvalue )string ini_set ( string varname , string newvalue ) ini_get()ini_get()函数函数 获取获取配置选项的配置选项的值值 string ini_get ( string varname string ini_get ( string varname ) ) 9北京万博天地网络技术股份有限公司 版权所有 13.2.213.2.2 错误检测 错误检测 vv在创建脚本和在创建脚本和WebWeb应用程序时,错误处理应用程序时,错误处理 是一个重要的是一个重要的部分部分 vv在在PHPPHP中一些最为重要的错误检测中一些最为重要的错误检测方法方法 简单简单的的“ “die()”die()”语句语句 自定义自定义错误和错误触发器错误和错误触发器 错误报告错误报告 10北京万博天地网络技术股份有限公司 版权所有 13.2.213.2.2 错误检测(续) 错误检测(续) vv使用使用die()die()函数函数 die()die()函数是相当于应用程序的函数是相当于应用程序的exit()exit()函数,表示函数,表示 终止脚本终止脚本运行运行 vv创建自定义错误处理器创建自定义错误处理器 可以可以创建一创建一个专用函数个专用函数,在,在PHPPHP中发生错误时中发生错误时 调用该函数调用该函数 error_function_name(error_level,error_message,errorerror_function_name(error_level,error_message,error _file,error_line,error_context)_file,error_line,error_context) 11北京万博天地网络技术股份有限公司 版权所有 13.2.213.2.2 错误检测(续) 错误检测(续) vv设置设置错误处理程序(错误处理程序(Set_Error_HandlerSet_Error_Handler函函 数)数) mixed set_error_handler ( callback mixed set_error_handler ( callback error_handler , int error_types = E_ALL | error_handler , int error_types = E_ALL | E_STRICT )E_STRICT ) vv触发错误(触发错误(trigger_errortrigger_error函数)函数) bool bool trigger_error ( string error_msg , int trigger_error ( string error_msg , int error_type error_type = E_USER_NOTICE = E_USER_NOTICE ) ) 生成一个用户级的错误生成一个用户级的错误/ /警告警告/ /通知消息,来触发通知消息,来触发 这个用户这个用户错误错误 12北京万博天地网络技术股份有限公司 版权所有 13.2.313.2.3 错误记录 错误记录 vv根据在根据在php.iniphp.ini中的中的log_errorslog_errors和和error_logerror_log配配 置,置,PHPPHP向服务器的错误记录系统或文件向服务器的错误记录系统或文件 发送错误发送错误记录记录 vv通过通过使用使用error_log()error_log()函数函数,可以,可以向指定的文向指定的文 件或远程目的地发送错误件或远程目的地发送错误记录记录 vv通过通过电子邮件电子邮件向自己向自己发送错误消息,是一发送错误消息,是一 种获得指定错误的通知的好种获得指定错误的通知的好办法办法 13北京万博天地网络技术股份有限公司 版权所有 13.2.313.2.3 错误记录(续) 错误记录(续) vv设置设置开启错误开启错误记录记录 log_errorslog_errors表示是否开启错误表示是否开启错误记录记录 error_logerror_log表示错误记录文件存储的位置和表示错误记录文件存储的位置和文件文件 名名 vv将错误信息存入错误记录文件需要使用将错误信息存入错误记录文件需要使用 error_log()error_log()函数函数 bool bool error_log(string message,int error_log(string message,int message_type=0,string destination,string message_type=0,string destination,string extra_headersextra_headers) 14北京万博天地网络技术股份有限公司 版权所有 13.313.3 异常处理异常处理 vv什么什么是异常是异常 vv异常异常的基本使用的基本使用 vv创建创建一个自定义的一个自定义的ExceptionException类类 vv多多个异常个异常 vv重新重新抛出异常抛出异常 vv设置设置顶层异常处理器顶层异常处理器 vv异常异常的的规则规则 15北京万博天地网络技术股份有限公司 版权所有 13.3.113.3.1 什么是异常 什么是异常 vv异常处理用于在指定的错误(异常)情况发生时改异常处理用于在指定的错误(异常)情况发生时改 变脚本的正常变脚本的正常流程流程 vv当当异常被触发时,通常会异常被触发时,通常会发生发生 当前当前代码状态被保存代码状态被保存 代码代码执行被切换到预定义的异常处理器函数执行被切换到预定义的异常处理器函数 根据根据情况,处理器也许会从保存的代码状态重新开始情况,处理器也许会从保存的代码状态重新开始 执行代码,终止脚本执行,或从代码中另外的位置继执行代码,终止脚本执行,或从代码中另外的位置继 续执行脚本续执行脚本 vv不同不同的错误处理的错误处理方法方法 异常异常的基本使用的基本使用 创建创建自定义的异常处理器自定义的异常处理器 多多个异常个异常 重新重新抛出异常抛出异常 设置设置顶层异常处理器顶层异常处理器 16北京万博天地网络技术股份有限公司 版权所有 13.3.213.3.2 异常的基本 异常的基本使用使用 vv当异常被抛出时,其后的代码不会继续执当异常被抛出时,其后的代码不会继续执 行,行,PHP PHP 会尝试查找匹配的会尝试查找匹配的“ “catch”catch”代码代码块块 vv如果异常没有被捕获,而且又没用使用如果异常没有被捕获,而且又没用使用 set_exception_handler()set_exception_handler()作相应的处理的话作相应的处理的话 ,那么将发生一个严重的错误(致命错误,那么将发生一个严重的错误(致命错误 ),并且输出),并且输出“ “Uncaught Exception”Uncaught Exception”(未捕(未捕 获异常)的错误消息获异常)的错误消息 17北京万博天地网络技术股份有限公司 版权所有 13.3.213.3.2 异常的基本 异常的基本使用(续)使用(续) vv异常处理程序异常处理程序应当应当包括包括 try try - - 使用异常的函数应该位于使用异常的函数应该位于 “try“ “try“ 代码块代码块内内 - - 这里规定如何触发这里规定如何触发异常异常 catch catch - “catch“ - “catch“ 代码块会捕获异常,并创建一代码块会捕获异常,并创建一 个包含异常信息的对象个包含异常信息的对象 18北京万博天地网络技术股份有限公司 版权所有 13.3.313.3.3 创建一个自定义的 创建一个自定义的ExceptionException类类 vv创建自定义的异常处理程序非常简单。我创建自定义的异常处理程序非常简单。我 们简单地创建了一个专门的类,当们简单地创建了一个专门的类,当 PHP PHP 中中 发生异常时,可调用其发生异常时,可调用其函数函数 vv该该类必须是类必须是 exception exception 类的一个类的一个扩展扩展 vv这个这个自定义的自定义的 exception exception 类继承了类继承了 PHP PHP 的的 exception exception 类的所有属性类的所有属性,可,可向其添加自定向其添加自定 义的函数义的函数 19北京万博天地网络技术股份有限公司 版权所有 13.3.413.3.4 多个 多个异常异常 vv可以为一段脚本使用多个异常,来检测多可以为一段脚本使用多个异常,来检测多 种种情况情况 vv使用使用多个多个 ifelse ifelse 代码块,或一个代码块,或一个 switch switch 代代 码块,或者嵌套多个码块,或者嵌套多个异常异常 vv这些这些异常能够使用不同的异常能够使用不同的 exception exception 类,并类,并 返回不同的错误消息返回不同的错误消息 20北京万博天地网络技术股份有限公司 版权所有 13.3.513.3.5 重新抛出 重新抛出异常异常 vv有时,当异常被抛出时,您也许希望以不有时,当异常被抛出时,您也许希望以不 同于标准的方式对它进行同于标准的方式对它进行处理处理 vv可以可以在一个在一个 “catch“ “catch“ 代码块中再次抛出代码块中再次抛出异常异常 vv脚本脚本应该对用户隐藏系统错误。对程序员应该对用户隐藏系统错误。对程序员 来说,系统错误也许很重要,但是用户对来说,系统错误也许很重要,但是用户对 它们并不它们并不感兴趣感兴趣 vv为了为了让用户更容易使用让用户更容易使用,可以,可以再次抛出带再次抛出带 有对用户比较友好的消息的有对用户比较友好的消息的异常异常 21北京万博天地网络技术股份有限公司 版权所有 13.3.613.3.6 设置顶层异常处理器 设置顶层异常处理器 vvset_exception_handler() set_exception_handler() 函数可设置处理所函数可设置处理所 有未捕获异常的用户定义有未捕获异常的用户定义函数函数 22北京万博天地网络技术股份有限公司 版权所有 13.3.713.3.7 异常的规则 异常的规则 vv需要需要进行异常处理的代码应该放入进行异常处理的代码应该放入 try try 代码代码 块内,以便捕获潜在的块内,以便捕获潜在的异常异常 vv每个每个 try
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年二手房交易电子合同范本:房屋交易电子档案管理
- 2025年度对外贸易合同二:国际贸易电子商务平台运营合作合同
- 2025版化工设备采购与安全验收总承包合同范本
- 2025版房产交易资金监管合同范本
- 2025版汽车行业区块链技术应用与解决方案合同
- 2025版商业综合体食堂厨具设备采购、安装及运营管理合同
- 2025年北京城市绿地系统建设工程施工合同
- 2025版豪华汽车年租合同样本
- 2025年拆除施工合同含施工进度款支付及结算条款
- 2025年农业产业链上下游销售采购合作协议范本
- 2025年国考行测试题及答案解析
- 财务岗位安全培训课件
- 2025年贵州省中考语文试卷真题(含答案)
- 2025至2030中国电容膜片真空计行业发展趋势分析与未来投资战略咨询研究报告
- 社工儿童沟通技巧课件
- 2025年甘肃省高考物理试卷(含答案)
- 2025二年级语文下册期末统考测试卷汇-总
- 血管活性药物静脉输注护理
- 造林绿化落地上图技术规范(试行)
- 2025年浙江省杭州市西湖区九年级中考一模科学试卷
- 苯乙酮项目可行性研究报告
评论
0/150
提交评论