Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1928902
  • 博文数量: 699
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4970
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 13:45
文章分类

全部博文(699)

文章存档

2011年(1)

2008年(698)

我的朋友

分类:

2008-10-15 13:53:50

    在程序运行过程中,往往出现一些意外错误状态而导致程序无法运行下去的情况。因此 在实现程序功能的同时,必须考虑如何处理程序运行过程中可能出现的各种异常情况。所谓异常是指打断程序正常流程的、非常见或意外的状态、打开文件时按路径找不到文件、不能分配所需的内存等。现本人结合实际就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所设的代码段进行。

  下面就如何利用这个结构来创建被保护语句块研究一个程序的例子,具体的调用事件处理过程主要代码如下:

var
 I,J,K:Integer;
Begin
 I:=0;J:=10;
Try
 K:=J DIV I; //产生异常的语句
Except
 ShowMessage (‘ Divede error!’ + ‘I=’+ IntToStr ( I ) + ‘J’ + IntToStr ( J ) +’k=’ + IntToStr ( K ));
End;

 

[1]  

【责编:Youping】

--------------------next---------------------

阅读(278) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~