Delphi中的异常处理

转载自http://www.cnblogs.com/dashan9zj/archive/2008/11/22/1338841.html

 

一.异常的来源。在Delphi应用程序中,下列的情况都比较有可能产生异常。

  1.文件处理

  2.内存分配

  3.windows资源

  4.运行时创建对象和窗体

  5.硬件和操作系统冲突

 

二.异常的处理

  1.try...except...end;

    在try 体内的代码发生异常时,系统将转向except 部分进行异常的处理。这是Delphi处理异常的最基本的方式之一。

    只有当try 体内的代码发生异常时,才会跳转到except 里面的代码进行执行

  2.try...finally...end;

    这种异常处理结构一般用于保护windows的资源分配等方面,它确保了无论try 体内的代码是否发生异常,都需要由系统进行最后的统一处理的一些Windows对象的正确处理

    和try...except...ebd不同,该结构的finally部分总被执行

  3.不存在try...except...finally...end 结构来既处理异常,又保护资源分配的结构,但是,try...except...end结构允许嵌套到try...finally...end结构中,从而既处理异常,又保护资源的分配

 

三.异常的精确处理

  1.定义一个异常

    在Delphi中,每个异常都是Exception类的一个派生类。因此,定义一个异常就是定义一个Exception类的派生类

type

    EMyException = class(Exception);

    当然,基类可以是Exception或者是Exception的任何一个任何层次的派生类

  2.在程序中抛出一个异常

    根据不同的情况抛出异常是使用异常的最基本的模式。在Delphi中,由raise语句来实现

    语法:raise 异常类.Create('异常的缺省说明');

  3.在try...except...end中更加精确的捕捉异常

    使用 on E:异常类 do... 结构可以在 do 体内处理特定异常类所抛出的异常

 

四.异常的调试

  在Delphi IDE中,解除“Debugger Options”(可以使用菜单Tools->Debugger Options...进行访问)中的Integrated Debugging复选框的勾选状态可以进行异常的调试

 

五.异常的补充说明

  1.每一段程序都有可能出错!这是软件业的一个不容置疑的现象和规律。事实上,传统的 if...else...结构完全可以解决所有的错误,使用 Exception 机制也没能够回避在最原始的层次,通过遍历可能的情况来产生异常的做法,那么,为什么还需要异常机制

    答案很简单:异常提供了一种更加灵活和开放的方式,使得后来的编程者可以来根据实际的情况处理这种错误,而不是使用预先设定好的处理结果。实际上,这就是异常处理机制的核心

你可能感兴趣的:(Delphi)