第十二章 异常处理与程序调试
在应用程序开发中如何检测、处理程序的运行错误是一个很重要的问题。在 Delphi 的集成开
发环境( IDE )中提供了一个完善的内置调试器,可以帮助你发现大部分程序错误。但并不是所有
的错误都可以被发现,而且当程序涉及到与外设的数据交换或操作外设,如要求用户输入、读写
磁盘等时,错误的发生是程序无法控制的,如输入非法字符、磁盘不能读写等。这些情况不仅会
导致应用程序异常中止而且可能引起系统的崩溃。针对这些问题,Delphi 同时提供了一套强大的
异常处理机制。巧妙地利用它,可以使你的程序更为强健,使用更为友好。
虽然 Delphi 为应用程序提供了一套缺省的自动异常处理机制,即当前模块发生错误后退出当
前模块并给出错误信息,而并不立即引起应用程序的中止。但当应用程序执行的过程性很强时,
仅仅利用这种方法是不够的,而且很容易导致程序执行的不可预测性。
12.1 Delphi 异常处理机制与异常类
Delphi 异常处理机制建立在保护块(Protected Blocks)的概念上。所谓保护块是用保留字 try 和
end 封装的一段代码。保护块的作用是当应用程序发生错误时自动创建一个相应的异常类
(Exception)。程序可以捕获并处理这个异常类,以确保程序的正常结束以及资源的释放和数据不
受破坏。如果程序不进行处理,则系统会自动提供一个消息框。
异常类是 Delphi 异常处理机制的核心,也是 Delphi 异常处理的主要特色。下面我们对异常类
的概念和体系进行详细的介绍。
Delphi 提供的所有异常类都是类 Exception 的子类。用户也可以从 Exception 派生一个自定义
的异常类。
Exception 类的定义如下,对于不常用的成员没有列出。
{SysUtils 单元中}
Exception = class(TObject)
private
FMessage: PString;
FHelpContext: Longint;
function GetMessage: String;
procedure SetMessage(const Value: String);
public
constructor Create(const Msg: String);
constructor CreateFmt(const Msg: String; const Args: array of const);
. . .
destructor Destroy; override;
property HelpContext: Longint
property Message: String;
property MessagePtr: PString;
end;
Exception 的一系列构造函数中最重要的参数是显示的错误信息。而数据成员中最重要的也是可
被引用的消息字符串(message,messagePtr)。 这些信息分别对自定义一个异常类和处理一个异常
类有重要作用。
- 1
- 2
前往页