b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

pascal 视频教程_pascal和basic_pascal选择排序(90)

电脑杂谈  发布时间:2016-12-28 07:02:37  来源:网络整理

对于异常处理程序,它自己也可以引发和处理异常。只要这些异常也是在异常处理程序的内部被处理,它们并不影响原来的异常;但是,若它超越了异常处理程序,原来的异常就会丢失。下面的

明了这一点。

type

ETrigError = class(EMathError);

function Tan(X: Extended): Extended;

begin

try

Result := Sin(X) / Cos(X);

except

on EMathError do

raise ETrigError.Create('Invalid argument to Tan');

end;

end;

若Tan在执行过程中发生了EMathError异常,则异常处理程序引发一个

为ETrigError提异常供处理程序,异常就传播到原异常处理程序的外面,从而导致

对于函数调用者来说,就像Tan函数引发了一个ETrigError异常。(不明白)

Try … finally statements(Try … finally语句)

有时,我们希望不管有没有发生异常,指定的一部分操作都要被完全执行。比如,当一个例程需要控制一个资源,不管例程是否正常结束,能释放资源是非常重要的。在这种情况下,你可以使用语句。

下面的例子演示这段代码如何打开和处理一个文件,并且,即使在执行过程中发生了错误也能保证在最后关闭文件。

Reset(F);

try

... // 处理文件F

finally

CloseFile(F);

end;

- 120 - Tan函数说ETrigError异常。因为Tan没有EMathError被销毁。 try...finally

Classes and objects

try...finally语句的语法是

try statementList1 finally statementList2 end

这里,每个statementList是一系列由分号隔开的语句。try...finally语句执行statementList1(try子句)中的命令,若它执行完毕并没有引发异常,statementList2(finally子句)被执行。若在执行statementList1时发生了异常,程序控制权转给statementList2,一旦它执行完毕,异常被重新引发。即使调用Exit、Break或Continue过程使程序控制权离开了statementList1,statementList2也会自动执行。所以,不论try子句如何结束,finally子句总是被执行。

若异常发生了但却没有在finally子句中进行处理,异常会传播到try...finally语句的外面,这样,在try子句中已经引发的异常都会丢失。所以,finally子句应当处理所有本地引发的异常,这样就不会打乱其它异常的传播。

Standard exception classes and routines(标准异常类和例程)

SysUtils单元声明了几个标准例程来处理异常,它们包括ExceptObject、ExceptAddr以及ShowException。 SysUtils和其它单元还包括很多异常类,它们(除了OutlineError)都是从Exception派生而来。

Exception类有Message和HelpContext的属性,它们用于传递错误描述和context ID,后者用于上下文相关联机文档;它还定义了多个构造函数,使你能以不同的方式指定描述信息和context ID。

- 121 -


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-90.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...