- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章Delphi程序异常处理与调试技术剖析
第六章 程序异常处理与调试技术
在DelphiDelphi提供了一种机制来处理运行错误,保护程序的正常执行,这种机制就是异常处理。异常处理的方法是把正常的执行程序同错误的处理程序分离开来,这样可以保证在没有错误时,程序正常执行,当发生错误时,执行错误处理部分的程序,然后程序跳出保护模块,继续执行后续的程序 。
6.1 Object Pascal异常的种类
异常的种类:Delphi内建的异常类,程序员自定义的异常类。
异常基类及其属性和主要方法:在Delphi中,所有异常的基类是Exception类。所有其他异常类都是由该类派生而来。
1. exception属性
该类有两个基本属性:HelpContext和Message。
(1)Exception.HelpContext属性
该属性的定义如下:
Type ThelpContext= -MaxLongint..MaxLongint;
Property HelpContext:ThelpContext;
HelpContext是ThelpContext类的一个实例,它提供了与异常对象联系在一起的上下文相关帮助信息的序列号。该序列号决定当发生异常时用户按F1键显示的一个异常错误的帮助信息。
(2)Exception.Message属性
该属性的定义如下:
property Message: string
该属性存储异常发生时的错误信息。可以通过该属性在提示错误对话框中显示错误信息字符串。
2.exception方法
(1)Exception.Create方法
该方法的定义形式为:
Constructor Create(Const Msg: String);
该方法用来产生一个带有一条简单提示信息的对话框,对话框中的提示内容由Msg提供
(2)Exception.CreateFmt方法
该方法的定义格式如下:
Constructor CreateFmt(Const Msg:String;Const Args:Array of Const) ;
该方法用来产生一个带有格式化字符串提示信息的对话框,格式化的字符串由Msg和Args数组共同提供,其中数组Args负责提供用于格式化的数值。
(3)Exception.CreatHelp方法
该方法的定义格式如下:
Constructor CreateHelp(Const Msg:String; AhelpContsxt:Integer) ;
该方法产生一个带有一条简单提示信息和上下文帮助序列号的提示对话框。其中Msg参数包含了显示在异常对话框中的运行错误信息。AhelpContext参数包含一个限定异常错误信息上下文帮助序列号。
6.1.1 Delphi内建的异常类
Delphi内建立异常类其标识符的第一个字母都是“E”,如此我们很容易就能辨认出此种类。
6.1.2自定义异常类
自定义的异常类必须继承内建的Exception类,或者继承Exception的某个子类才行。除此之外,自定义异常类的语法和自定义一般类的语法并没有不同 。
6.2触发异常的方法
触发异常的方法,主要可分为两种,一种是由程序系统自动触发,一种则是利用raise指令触发.
6.2.1由程序系统自动触发
只要属于Delphi内建类的异常产生时,程序系统就会在当下自动触发它们,并捕捉其信息,然后将异常的信息以对话框显示出来,这些是一般公认的异常状况,即使我们不对这些异常做处理,程序系统也会帮我们做处理,然后让程序再继续执行下去,这样程序就不会在当时异常中断,而出现意料之外的问题。
不过程序系统所作的只是一般的处理,通常仅是避开执行会发生异常的程序代码,而不会排除掉异常发生的原因。故若保持原来的状态再做同样的执行操作,仍旧会触及同样的异常,却无法执行下一步的程序。因此为了让程序执行更顺畅,并且让用户更容易使用我们所开发的应用程序。即使是程序系统自动触发的异常,我们也应该主动去处理,设法去除导致异常的原因。或者给予用户更明确,更人性化的提示,尽量不要让用户感到任何操怍上的困难,并且避免异常重复发生而浪费不必要的时间。
6.2.2使用raise指令触发
自行触发异常的方式.使用raise指令.其语法如下:
Raise 异常对象实体
不要将raise指令当成一般语句使用,它必须配合异常处理语法来使用 。
6.3处理异常情况
专门用来处理异常情况的语句主要有两种,一种是“try_ except_end”结构,另一种则是“try_finally_end”结构 。
由于Delphi在程序设计时,提供了调试器(Debugger),因此当程序执行时若发生异常状况,调试器将发挥功能,让程序在异常发生点,并且提示调试的方法,方便找
您可能关注的文档
- 2017-2018年北航动力工程及工程热物理941流体工热综合考研大纲重难点100000精选.doc
- 2017.1初一期末语文期末试题及答案精选.doc
- 2016~2017学年度上学期九年级期末模拟考试精选.doc
- 2017-1-4-海南建设工程机械施工有限公司-网站建设方案书精选.doc
- 第3章电容式传感器4剖析.pptx
- 第3章电路的暂态分析1剖析.pptx
- 第3章电路的暂态分析[修复的]剖析.pptx
- 20171209化学相关精选.doc
- 第44届世界技能大赛糖艺西点项目广东选拔赛实施剖析.doc
- 第3章港口对运输的影响剖析.pptx
- 第5章特色分割算法剖析.pptx
- 第6章_抽象、封装与类剖析.doc
- 2017届区域地理复习东亚(日本)、中亚精选.pptx
- 2017届河北省定州中学高三(高补班)上学期周练(三)(8.21)物理试题(解析版)精选.doc
- 2017届河北省定州中学高三12月考政治题精选.doc
- 2017届河北省正定中学高三上学期第一次月考政治试卷含解析精选.doc
- 2017届江苏省高考化学一轮复习专题演练:专题7《有机化学基础》30《常见有机反应》(苏教版)Word版含解析精选.doc
- 2017届河北省定州中学新高三上学期周练(四)(7.8)政治试题(解析版)精选.doc
- 第6章__金融衍生品计算剖析.doc
- 2017届河南省百校联盟高三9月教学质监测政治试题精选.doc
文档评论(0)