文件名称:手动触发异常-京东应用架构设计
文件大小:7.56MB
文件格式:PDF
更新时间:2024-06-30 04:57:21
Delphi 2010 语法
6.4 手动触发异常 某此情形下,被检测的代码可能没有出现错误或出现的错误已经被处理,但出于种种 原因我们需要在这些代码中强行触发一个异常,这种情形下可以使用特定的代码手动触发 一个异常。Delphi使用关键词 raise来达到这个目的。 类似于 inherited,raise可单独作为一条语句,也可在其后接一个对象。当 raise单 独作为语句时,它会将目前正在处理的异常重新提交给外层的异常处理语句;当 raise后 接一个对象时表示将这个对象提交给外层的异常处理语句。 begin writeln('请输入数字 i的值'); read(i); try try writeln(inttostr(9 div i)); except showmessage('Inner Except'); raise Exception.Create('error'); end; except showmessage('Outer Except'); end; end. 运行后会以连续显示两个对话框,分别显示"Inner Except"及"Outer Except"。原因是内 层的处理语句处理处理了异常后,raise语句会将当前的异常提交给外层,所以外层的处 理语句也得到了执行。将粗体部分的 raise 语句去掉再运行,可发现只有一个对话框会弹 出,显示"Inner Except"。 实际应用中处理一个异常时,经常会由于各种原因而无法完整的处理这个异常,此时 可先处理这个异常的一部分,然后利用 raise语句将其提交给外层的处理语句以处理剩下 的部分: program Project1; {$APPTYPE CONSOLE} uses SysUtils, Dialogs; procedure ReRaiseErr( i:Integer); begin try writeln(5 div i); except ShowMessage('Run Error'); raise; end;