在Delphi中有两种程序错误,一种是编译错误,在程序编辑阶段就可以由编译器发现并给出提示。另外一种是运行错误,这类错误不能在编译阶段查出,只能在程序执行时发现,称为运行错误。 Delphi提供了一种机制来处理运行错误,保护程序的正常执行,这种机制就是异常处理。异常处理的方法是把正常的执行程序同错误的处理程序分离开来,这样可以保证在没有错误时,程序正常执行,当发生错误时,执行错误处理部分的程序,然后程序跳出保护模块,继续执行后续的程序。
1 异常处理的目的
为了避免程序在执行中出现可能超乎预料结果而导致错误的状况,然后对这些异常的状况做妥善的处理,不让异常的状况造成错误的结果。致使程序异常停止,这就是异常处理存在的目的。
可能会认为所开发的程序是可以执行的,因此不需要异常处理,然而当程序编译后没有错误发生时,并不表示程序就完美无缺,事实上某些异常状况是在执行中才发生的。除此之外,有时程序还会受软、硬件环境的影响而发生程序异常的情况异常处理,可以说是预防程序执行时发生异常而中断的一道防线,通过异常处理可以设法让程序避开异常的发生,不让它异常中断;或者在中断程序前,对数据做适当的处置,而不致丢失重要的数据。
2 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参数包含一个限定异常错误信息上下文帮助序列号。