计算机课件 计算机课件 第05章容错环节与程序调试

上传人:woxinch****an2018 文档编号:44762803 上传时间:2018-06-14 格式:PPT 页数:19 大小:1.10MB
返回 下载 相关 举报
计算机课件 计算机课件 第05章容错环节与程序调试_第1页
第1页 / 共19页
计算机课件 计算机课件 第05章容错环节与程序调试_第2页
第2页 / 共19页
计算机课件 计算机课件 第05章容错环节与程序调试_第3页
第3页 / 共19页
计算机课件 计算机课件 第05章容错环节与程序调试_第4页
第4页 / 共19页
计算机课件 计算机课件 第05章容错环节与程序调试_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《计算机课件 计算机课件 第05章容错环节与程序调试》由会员分享,可在线阅读,更多相关《计算机课件 计算机课件 第05章容错环节与程序调试(19页珍藏版)》请在金锄头文库上搜索。

1、 第5章 容错环节 本章学习目标n 容错环节的重要性n 容错环节的设计原则n 结构化错误处理n 非结构化错误处理 第5章 容错环节 5.1 容错代码及其实现策略 5.2 错误种类与错误处理5.1 容错代码及其实现策略容错能力脆弱是导致程序崩溃的根本原因。5.1.1 容错代码被忽略的原因 5.1.2 实现全面容错的途径5.1.3 提交友好的报错信息 5.1.1 容错代码被忽略的原因 1商业原因 展示容错代码会渲染系统的脆弱性,影响用户或潜在用户对系统的信心。 容错需要数量庞大的代码,编写、调试这些代码会降低短期商业效益。 多数管理者认为编程的目的是完成明确的任务,容错代码不是关键所在。 事实上,

2、评估软件的长期效益是比较困难的。容错能力很难正确测算。 2技术原因 短期培训可以使新程序员迅速掌握新技术,但是通常不包括编写容错代码的 环节。在发现了程序错误后,才能够逐渐懂得如何预见、预防和处理各种错 误。 与在编写功能代码阶段编写的容错代码相比, “补丁”程序往往是低质量的代 码。 3认识上的误区n 委托者认为任务中隐含着编写错误处理代码的工作。n受期限限制,错误处理代码是“偷工减料”的第一牺牲品。n 即使出现了错误,也是可以修复的。 5.1.2 实现全面容错的途径 1尽早处理错误出现错误后允许用户进行的每一步功能性操作,对用户而言都是在浪费 时间和精力。 尽早处理错误的要诀是在编码过程中

3、遵循下列规则:n预防所有可以预料和防止的错误。n处理所有可以预料但不能防止的错误。n 捕获所有不能预料的的错误。错误可以被分成两种类型:可以预料的和不可以预料的。 (1)预防错误。 (2)处理错误。当错误发生后,容错代码将智能性地按照某种逻辑对错误 进行纠正,而不是简单地将控制引向错误发生前的位置。 (3)捕获错误。不可预料错误可能引起系统崩溃,或造成某种灾难性的后 果。而捕获错误虽然不能对错误进行纠正,但是能恢复到某种状态。从理论上讲,不存在不可预料的错误,只存在由于学识方面的原因而不 能预料的错误。 5.1.2 实现全面容错的途径 2随时编写错误处理代码 推迟处理错误往往会引发许多严重的后

4、果。为程序“打补丁”时,程 序员可能已经忘记了错误发生的原因和处理方法等方面的细节。更 坏的情况是,当一个程序员为另一个程序员编写的程序“打补丁”时 ,还可能引入更多的错误。 当用户由于程序错误而请求支持时,会怀疑程序的健壮性,这无疑 会影响开发者的形象和进一步合作的前景。 因此,在编写每一行功能性代码时,必须考虑是否需要容错以及如 何容错。5.1.3 提交友好的报错信息 可以将报错信息分为两类,一类为用户服务,另一类为开发者或系 统支持者服务。最好不要让这两类信息出现在同一个消息中。 提供面向用户的错误信息时,应注意下列几点: n语言尽量通俗。n隐藏不必要的细节。n为不同的错误提供不同的描述

5、。n尽量明确表达导致错误的原因。 提供面向开发者的错误信息时,应注意下列几点:n提供所有必须的信息,以便改正错误。n不应显示给用户。5.2 错误种类与错误处理 5.2.1 错误种类 5.2.2 结构化错误处理 5.2.3. 非结构化错误处理5.2.1 错误种类一般而言,可以将程序中的错误分为3种; 1语法错误 这类错误一般是由于编程者对程序语言的规范不甚熟悉或输入错误 造成的。是一种出现概率相当高的错误,浏览器中会出现比较详细 的报错信息,一般可以根据这些信息方便地排除错误。下面是一个 包含语法错误的例子,其运行结果如图所示。5.2.1 错误种类2逻辑错误 这类通常是由于编程者对语句功能理解有

6、误或所设计的算法不正确造成的。 是一种最难排除的错误。因为系统不会对此类错误给出任何报错信息,因此 编程者很难找到问题所在。对于这类错误,需要进行调试,而不是编写容错 代码。 3运行期错误 这类错误出现于程序运行期间,通常是由于编程者考虑问题不够全面造成的 。 产生错误的原因有许多种:程序需要使用的一些服务程序没有正常安装,会 产生错误;程序中包含使用语法错误的代码会产生错误;程序的运行将系统 引入窘境也会产生错误。 当错误发生时,可以采取某些措施来更正错误,也可以仅仅向用户提供一个 友好的出错提示,甚至可以不对错误采取任何措施。如果选择什么都不做, 至少在使用浏览器的时候,不会看到一个应用程

7、序未处理错误时所发生的一 切。5.2.1 错误种类下列代码中含一个“被零除”错误,这段代码被调用时,在浏览器中 将显示如图所示的结果。5.2.2 结构化错误处理可以利用TryCatchFinally语句实现错误捕获和处理。 TryCatchFinally语句的格式如下: Try tryStatements Catch exception As type When expression catchStatements Exit Try Finally finallyStatements End Try下面是一个包含容错机制的例子,其运行结果如图所示。 5.2.2 结构化错误处理如果在调试程序的过

8、程中,编程者需要知道有关错误细节的信息,可 以直接编程读取Exception类的有关属性。 下面是一个可以提供详细的错误信息的例子。其运行结果如图所示。在编程实践中,有时需要用代码生成一个错误,以满足某种需要。下 面是一个利用Throw()生成错误的一个例子,其运行结果如图所示。5.2.3. 非结构化错误处理 以非结构化的方式实现错误处理,是VB的传统方式。但需要指出的是, 使用非结构化错误处理会降低应用程序性能并导致代码难以调试和维护 。建议使用结构化错误处理方法。 5.2.3.1 On Error语句 5.2.3.2 Err对象 5.2.3.1 On Error语句 在以非结构化式编写容错

9、代码时,需要使用On Error语句。该语句常用语 法如下: On Error Resume Next|Goto line|Goto 0其中:nResume Next:开启错误陷阱,如果某语句产生一个错误,则运行其后 续语句。nGoto line:开启错误陷阱,如果某语句产生一个错误,则跳转到标号 为Line的语句处运行。nGoto 0:关闭错误陷阱。 下面是一个利用On Error语句实现容错的例子,其运行结果如图所示。 5.2.3.2 Err对象 在前面的例子中,用到了Err对象。该对象提供了一系列属性和方法,借助 于这些属性和方法可获得与所发生错误有关的各种信息,进而可利用这些 信息对错

10、误进行处理。 1Err对象的属性 Err对象的属性由错误的生成者来设置。Err对象包含5个属性,最常用的是 前面3个。 属性用途Number返回或设置表示错误的数值,如果没有错误发生则该值为零Description返回或设置对错误的描述信息。当无法处理或不想处理错误时,可用该属性提醒用 户;在生成用户自定义错误时,可将用于对自定义错误进行描述的字符串写入该属 性Source返回或设置生成错误的对象或应用程序的名称HelpFile返回或设置与错误相关联的帮助文件的路径HelpContext返回或设置与错误相关联的帮助文件的主题号5.2.3.2 Err对象 下面是一个利用Err对象的属性获取详细的

11、错误信息的例子。其运行结果如 图所示。 一般情况下,将Err对象给出的信息直接反馈给一般用户的办法是不可取的 。比较专业的做法是只在程序中使用这些信息,而通过编写代码将更加通 俗的信息展示给用户。5.2.3.2 Err对象 2Err对象的方法 Err对象包括两个方法。Clear方法用于删除一个错误。现把上例改写一下,看结果会有什么变化,运行结果 如图所示。上述程序运行时,产生了一个“溢出”错误。但由于用Err.Clear删除了该错误, Case Else之后的代码段未被执行,故产生了“100/0=0”的荒谬结果。 方法用途Clear将Err对象的所有属性强置为默认值Raise用于在代码中人为地

12、生成错误5.2.3.2 Err对象 Raise方法的语法如下: Err.Raise(Number,Source,Description,Helpfile,Helpcontext)。为使 Err属性免受旧值干扰,在使用Raise方法之前,应首先使用Clear方法将 Err对象的各个属性强置为默认值。 参数描述Number整数,必需的参数。指定用于标识将生成错误的数值。允许的数值范围在065535之间。其中,0512 为系统保留使用的错误标识。程序设计者如果需要自定义错误而非模拟系统保留错误,应在51365535 之间选择数值。并且,为了避免与系统保留的错误标识冲突,自定义的错误标识应在vbObjectError, vbObjectError+512之外Source字符串,可选的参数。指定产生错误的对象或应用程序名称Description字符串,可选的参数。指定用于描述错误的字符串。当不指定该参数时,如果Number参数被指定为 VBScript运行时错误代码,则系统将本参数设置为相应的错误描述字符串;否则系统将本参数设置为“未 知的运行时错误”Helpfile可选的参数。指定帮助文件的完整路径Helpcontext可选的参数。指定帮助文件的主题号

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

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