第6章 Delphi程序异常处理与调试技术.doc
文本预览下载声明
第六章 程序异常处理与调试技术
在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),因此当程序执行时若发生异常状况,调试器将发挥功能,让程序在异常发生点,并且提示调试的方法,方便找
显示全部