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

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

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

'%d is not within the valid range of %d..%d',

[Result, Min, Max]);

end;

注意raise语句中调用的CreateFmt方法。Exception和它的派生类有特殊的构造函数,提供了可选择的方法来创建异常消息和context ID。

被引发的(raised)异常在处理后自动清除,永远不要试图手动销毁它。

注意:在单元的初始化部分引发一个异常可能无法产生预期的结果。对异常的正规支持来自SysUtils单元,在获得这种支持之前,它必须被初始化。如果在初始化期间产生了异常,所有被初始化的单元(包括SysUtils)执行结束化处理,并重新引发异常。然后,通常是结束程序来捕获和处理异常(Then the

- 117 -

Classes and objects

exception is caught and handled, usually by interrupting the program)。

Try … except statements(Try … except语句)

异常在try...except语句中被处理,比如,

try

X := Y/Z; except

on EZeroDivide do HandleZeroDivide; end;

上面的语句尝试Y被Z除,若EZeroDivide异常发生,则调用例程try...except语句的语法是

try statements except exceptionBlock end

这里,statements是语句序列(由分号隔开的一系列语句)? 其它语句序列,或者是

? 一系列异常处理程序,后面跟可选的 else statements

一个异常处理程序具有如下格式

on identifier: type do statement

这里,identifier:是可选的(若有的话,它可以是任何有效标志符)何语句。

一个try...except语句执行开始处的(初始)代码,若没有引发异常,异常代码段(略,程序控制转到下一部分。

若执行初始代码时发生了异常(或者执行了raise语句,或者是调用过程或函数引起的)进行处理:

? 若异常处理块(exception block)中有对应的异常,则控制权交给第一个匹配的处理程序。当处理程

序中指定的异常类和(发生的)异常所属的类相同,或者是异常的祖先类时,我们说,这个异常处理程序与这个异常相“匹配”。

? 若没有发现相应的异常处理程序,当有else子句时,程序控制转到? 若异常处理块中没有异常处理程序,而只是语句序列,则程序控制转到它的第一个语句。如果上面的条件都不成立,会继续搜索下一个try...except子句或语句序列,搜索会继续扩展到下一个try...except语句块,语句块并且异常还没有被处理,程序就会终止。 当处理一个异常时,堆栈退回到包含try...except语句的过程或函数,子句或语句序列。这个过程忽略所有进入try...except后调用的过程和函数,然后,异常对象自动调用析构函数进行销毁,程序控制权转给try...except后面的语句。制权离开了异常处理程序,异常对象也会自动销毁。)

在下面的例子中,第1个异常处理程序处理被0除异常,第算异常。EMathError在最后出现,因为它是另外两个异常的祖先,若它最先出现,另外两个将永远不会被调用。

try ... except

on EZeroDivide do HandleZeroDivide; on EOverflow do HandleOverflow;


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

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

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