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

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

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

- 118 -

HandleZeroDivide。 exceptionBlock或者是 ,type用来表示异常类,statement是任exceptionBlock)被忽,都将试图对它else子句。

若还没有合适的异常处理程序、或else依此类推。如果达到最外层的try...except程序控制权转给异常处理程序、elseExit、Break或Continue使程序控2个处理溢出,最后一个处理其它的数学运,语句块;(如果调用

Classes and objects

on EMathError do HandleMathError;

end;

在异常处理程序中,可以在异常类之前指定一个标志符,在执行on...do后面的语句时,它表示异常对象,标志符的作用域被限定在这个语句中。比如,

try

...

except

on E: Exception do ErrorDialog(E.Message, E.HelpContext);

end;

若在异常处理块中使用了else子句,则它处理所有未经异常处理程序处理的异常。比如,

try

...

except

on EZeroDivide do HandleZeroDivide;

on EOverflow do HandleOverflow;

on EMathError do HandleMathError;

else

HandleAllOthers;

end;

这里,else子句处理所有不是EMathError的异常。

若异常处理块没有异常处理程序,而只是包含一系列语句,则它们处理所有的异常。比如,

try

...

except

HandleException;

end;

这里,try和except之间的代码在运行时产生的异常,都由HandleException

Re-raising exceptions(重新引发一个异常)

当关键字raise在异常块中出现,并且它的后面没有对象引用时,它引发正在处理的异常。这使得异常处理程序能对错误做有限处理后重新引发它。对于发生异常后必须进行清除工作、但又不能进行全面处理的过程或函数,重新引发一个异常是有用的。

比如,GetFileList函数分配一个TStringList对象,并用指定搜索路径下的文件名来填充它。

function GetFileList(const Path: string): TStringList;

var

I: Integer;

SearchRec: TSearchRec;

begin

Result := TStringList.Create;

try

I := FindFirst(Path, 0, SearchRec);

while I = 0 do

begin

Result.Add(SearchRec.Name);

- 119 - 例程进行处理。

Classes and objects

I := FindNext(SearchRec);

end;

except

Result.Free;

raise;

end;

end;

GetFileList创建一个TStringList对象,然后使用FindFirst和FindNext函数(在SysUtils单元定义)来初始化它。如果初始化失败(比如搜索路径无效,或者没有足够的内存来填充字符串列表),GetFileList需要释放字符串列表,因为函数的调用者还不知道它的存在。由于这个原因,初始化字符串列表在try...except语句中执行,若发生了异常,异常处理块释放字符串列表,然后重新引发这个异常。Nested exceptions(嵌套的异常)


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

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

    • 高村惠美
      高村惠美

      期待杨洋未来更多的作品

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