第9张 异常处理
在继续介绍 Object Pascal 语言中类的其他特性之前,我们需要重点介绍一组用于处理错误条件的特殊对象,即异常。
异常处理的理念是以一种简单、统一的方式添加处理软件或硬件错误(以及任何其他类型的错误)的功能,使程序更加健壮。程序可以在此类错误发生后继续运行,或优雅地终止,允许用户在程序退出前保存数据。异常允许你将错误处理代码从正常代码中分离出来,而不是将两者交织在一起。这样,你最终编写的代码就会更加紧凑,与实际编程目标无关的维护工作也会减少。
另一个好处是,异常定义了一种统一、通用的错误报告机制,组件库也使用这种机制。在运行时,系统会在出错时引发异常。如果你的代码编写得当,系统就会确认问题并尝试解决问题;否则,异常就会传递给它的调用代码,如此循环。最后,如果你的代码中没有任何部分处理异常,系统一般会通过显示标准错误信息并尝试继续运行程序来处理异常。如果你的代码是在任何异常处理块之外执行的,那么引发异常将导致程序终止,这种情况不太常见。
Object Pascal
的整个异常处理机制是基于五个独立的关键字:
try
表示受保护代码块的开始except
表示受保护代码块的结束,并引入异常处理代码on
标记单个异常处理语句,与特定的异常类绑定,每个语句的语法都是:on 异常类型 do 语句finally
用于指定即使出现异常也必须始终执行的代码块raise
语句是用来触发异常的语句,它的参数是一个异常对象(这种操作在其他编程语言中称为 throw)。
以下是 Object Pascal 与基于 C++ 异常语法的语言(如 C# 和 Java)中异常处理关键字的简单比较表:
try try
except on catch
finally finally
raise throw
用 C++ 语言的术语来说,就是抛出一个异常对象并按类型捕获它。这在 Object Pascal 中也是一样的,你向 raise 语句传递一个异常对象,你接收它作为 except on 语句的参数。