05第05章容错环节与程序调试.ppt

05第05章容错环节与程序调试.ppt

ID:48811112

大小:1.10 MB

页数:19页

时间:2020-01-27

05第05章容错环节与程序调试.ppt_第1页
05第05章容错环节与程序调试.ppt_第2页
05第05章容错环节与程序调试.ppt_第3页
05第05章容错环节与程序调试.ppt_第4页
05第05章容错环节与程序调试.ppt_第5页
资源描述:

《05第05章容错环节与程序调试.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

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

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

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

5、为不同的错误提供不同的描述。尽量明确表达导致错误的原因。提供面向开发者的错误信息时,应注意下列几点:提供所有必须的信息,以便改正错误。不应显示给用户。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结构化错误处理可以利用Try…Catch…Finally语句实现错误捕获和处理。Try…Catch…Finally语句的格式如下:Try[tryStatements][Catch[exception[Astype]][Whenexpression][catchStatements]][ExitTry]…[Finally[finallyStatements]]End

8、Try下面是一个包含容错机制的例子,其运行结果如图所示。5.2.2结构化错误处理如果在调试程序

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。