|
引言 在程序运行过程中,往往出现一些意外错误状态而导致程序无法运行下去的情况。因此 在实现程序功能的同时,必须考虑如何处理程序运行过程中可能出现的各种异常情况。所谓异常是指打断程序正常流程的、非常见或意外的状态、打开文件时按路径找不到文件、不能分配所需的内存等。现本人结合实际就Delphi中异常的产生、来源以及实现异常处理的方法进行探讨。 异常的来源 异常可由一些不同的资源产生,用户的程序可以因为不正常状态产生异常,Delphi的组件可以因为不同的事件产生异常,把越界值赋给属性或尝试为不存在的数组元素建立索引, 运行的库过程和函数也能产生异常,执行带有非法操作的数学表达式,如被0除肯定是异常。 其他产生异常操作的例子包括:引用nil指针执行非法类型转换的表达式等。总的来说,软件在运行过程中遇到的情况千差万别,因此产生异常的情况也各有不同。 传统的异常处理方法 对于程序运行过程中产生的异常情况,传统处理的方法主要是通过IF语句,布尔型标志和特别函数返回值来控制。如在加载文件时,采用条件语句,以处理可能产生的打开空文件的错误。 If Opendialog.Filename=nil then //判断是否选择文件 Begin ShowMessage(“ 选择文件无效,请重新选择一个文件”) ; End; 以上例子是通过IF语句判断到异常事件后,提示重新操作。这种异常处理方法当然很容易理解,但在软件编写的过程中,如果每个地方都使用IF语句来检查错误并处理异常,会使编程工作变得较为繁杂。在Delphi中,这个问题可以用更简便的方法来实现异常处理。 Delphi 中的异常处理方法 Delphi支持多种异常处理机制,Object Pascal提供了高级的异常处理机制。在这里就两种异常处理方法进行探讨: 1、创建被保护语句块 所谓被保护语句块,简单说是一条或多条语句,带有对这些语句产生异常的处理器,运用try和except关键字来创建被保护语句块的结构。具体结构如下: Try //可能引起异常的代码段 ··· except //对异常进行处理的代码段 ··· end; 其中try和except为关键字,try用于标志可能产生异常的代码段。如果这段程序在运行时产生了异常,系统会中止try代码段的执行,并根据except所设的代码段进行。 下面就如何利用这个结构来创建被保护语句块研究一个程序的例子,具体的调用事件处理过程主要代码如下:
|