Delphi异常处理总结

本文详细介绍了Delphi的异常处理机制,包括异常的来源、处理方式(try-except-end、try-finally-end)以及异常类结构。强调了异常处理的重要性,如避免程序崩溃,确保资源的正确释放。同时,列举了不同类型的异常,如I/O异常、堆异常、整数异常、浮点异常、类型匹配和转换异常、硬件异常,以及对象和组件异常,帮助开发者更好地理解和处理Delphi程序中的异常情况。
摘要由CSDN通过智能技术生成

以前写delphi程序一直不注意异常处理,对其异常处理机制总是一知半解,昨天程序中的一个bug,让我对异常有了更深入的认识,必须要对可能产生异常的地方进行异常处理,否则可能给程序造成灾难,就像昨天,因为写的filecopy函数没有做异常捕获处理,导致复制文件出错时整个程序崩溃,用户只能通过杀进程的方式重启程序再进行其它操作(汗~)。后来对程序进行异常处理,遇到意外只是提示下用户,然后可以继续运行下去,表现很完美,才意识到异常处理的重要性,故要总结下Delphi异常处理相关的知识。

Delphi异常处理机制建立在保护块(Protected Blocks)的概念上。所谓保护块是用保留字try和end封装的一段代码。保护块的作用是当应用程序发生错误时自动创建一个相应的异常类(Exception)。程序可以捕获并处理这个异常类,以确保程序的正常结束以及资源的释放和数据不受破坏。如果程序不进行处理,则系统会自动提供一个消息框。每一段程序都有可能产生错误!这是软件业的一个不容置疑的现象和规律。事实上,传统的if…else…结构完全可以解决所有的错误,使用Exception机制也没能够回避在最原始的层次,通过遍历可能的情况来产生异常的做法,但异常提供了一种更加灵活和开放的方式,使得后来的编程者可以来根据实际的情况处理这种错误,而不是使用预先设定好的处理结果。

一、异常的来源
  在Delphi的应用程序中,下列的情况都比较有可能产生异常。  
  (1)文件处理  
  (2)内存分配  
  (3)Windows资源 
  (4)运行时创建对象和窗体  
  (5)硬件和操作系统冲突

二、异常处理

(1)try…except…end;  

在try体内的代码发生异常时,系统将转向except部分进行异常的处理。这是Delphi处理异常的最基本的方式之一。try语句块指出了需要进行异常保护的代码。如果在这部分有不正常的事件发生,则引发一个异常对象。except是异常处理部分,被保护部分引发的异常对象将执行<异常处理语句>或由这部分代码捕获并进行处理。

try except语句的一般格式如下:

try //try保护代码块

被保护语句

except //异常处理块

异常处理语句 //异常不发生,不处理

end;

try //try保护代码块

被保护语句

except //异常处理块

on <异常对象类型1> do <语句1> //捕获指定类型的异常对象,进行处理

on <异常对象类型n> do <语句n> //捕获指定类型的异常对象,进行处理

else

<语句n+1> //缺省的异常处理代码

end;

(2)try…finally…end;  

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

和try…except…end不同,该结构的finally部分总被执行。在try-finally语句中,当try部分产生异常后,应用程序直接执行Finally部分的资源释放语句。

try finally语句的一般格式如下:

try //try保护代码块

被保护语句

finally //异常处理块

异常处理语句 //无论异常发生否,都必须处理

end;

若用作创建一个资源保护块时,它的格式可写成:

(分配系统资源)

try

(使用系统资源的语句)

finanlly

(释放系统资源)

end;

(3)不存在try…except…finally…end结构来既处理异常ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值