一
异常的来源
在Delphi的应用程序中下列的情况都比较有可能产生异常
()文件处理
()内存分配
()Windows资源
()运行时创建对象和窗体
()硬件和操作系统沖突
二异常的处理
()try…except…end;
在try体内的代码发生异常时系统将转向except部分进行异常的处理这是Delphi处理异常的最基本的方式之一
()try…finally…end;
这种异常处理结构一般用于保护Windows的资源分配等方面它确保了无论try体内的代码是否发生异常都需要由系统进行最后的统一处理的一些Windows对象的正确处理
和try…except…end不同该结构的finally部分总被执行
()不存在try…except…finally…end结构来既处理异常又保护资源分配的结构但是try…except…end结构允许嵌套到try…finally…end结构中从而实现既处理异常又保护资源的分配
三异常的精确处理
()定义一个异常
在Delphi中每个异常都是Exception[]类的一个派生类[]因此定义一个异常就是定义一个Exception类的派生类
type EMyException = class(Exception);
当然基类可以是Exception或者Exception的任何一个任何层次的派生类
()在程序中抛出一个异常
根据不同的情况抛出异常是使用异常的最基本的模式在Delphi中由raise语句来实现
【语法】raise 异常类Create(异常的缺省说明);
()在try…except…end中更加精确的捕捉异常
使用on E:异常类 do…结构可以在do体内处理特定异常类所抛出的异常
四异常的调试
在Delphi IDE中解除Debugger Options(可以使用菜单Tools—>Debugger Options…进行访问)中的Integrated Debugging复选框的勾选状态可以进行异常的调试
五异常的补充说明
()每一段程序都有可能产生错误!这是软件业的一个不容置疑的现象和规律事实上传统的if…else…结构完全可以解决所有的错误使用Exception机制也没能够回避在最原始的层次通过遍历可能的情况来产生异常的做法那么为什么还要异常机制?
答案很清楚异常提供了一种更加灵活和开放的方式使得后来的编程者可以来根据实际的情况处理这种错误而不是使用预先设定好的处理结果