Object Pascal 定义以下几个过程来辅助流程控制:
1. procedure Abort;
激发一个静态异常(即异常信息不显示)并退出当前过程或者 try
except 块。例如:
procedure TForm1.Button2Click(Sender: TObject); begin if True then Abort; procedure TForm1.Button2Click(Sender: TObject); begin try if True then Abort ; except //Abort激发的异常被捕捉,因此执行except end中的异常处理代码 ShowMessage('Abort'); end; ShowMessage('处理完毕'); //执行,因为异常已经被处理。如果使用try finally,则这句不会被执行 end; //激发一个静态异常后直接退出Button2Click,不会执行后的 //ShowMessage语句 ShowMessage('处理完毕'); end;
如果 Abort 被包含在一个 try
except 块中,则只退出 try
except,然后执行 except
end 块,最
后再继续执行下面的语句。如果包含在 try
finally 块中,则执行 finally
end 块然后退出过程。如:
procedure TForm1.Button2Click(Sender: TObject); begin try if True then Abort ; except //Abort激发的异常被捕捉,因此执行except end中的异常处理代码 ShowMessage('Abort'); end; ShowMessage('处理完毕'); //执行,因为异常已经被处理。如果使用try finally,则这句不会被执行 end;
2. procedure Exit;
正常退出过程。如果处在 try
finally 块中,则执行 finally
end 块然后退出过程。例如:
begin try if True then Exit; finally ShowMessage('Abort'); //执行 end; ShowMessage('处理完毕'); //不执行 end;
3. procedure Halt([Exitcode: Integer]);
非正常结束一个应用程序,Exitcode 为可选的退出码参数,此参数由操作系统接收。如果是非控
制台(即有图形化界面)程序,一般调用 Application.Terminate 来实现正常结束。
4. procedure RunError ([Errorcode: Byte]);
生成一个运行时错误(由可选参数 Errorcode 指定,默认为 0)并结束程序执行。
5. procedure Continue;
使用在循环语句中,结束当前循环并进入下一个循环。如果位于 try
finally 块中,则会首先执行
finally
end 再进入下一个循环。例如:
var I: Integer; begin for I := 0 to 2 do begin try if I < 2 then Continue; ShowMessage(IntToStr(I)); finally ShowMessage('finally'); end; end; end;
上面例子的执行结果是:首先显示两次’finally’(分别对应 I=0 和 1),然后显示一次 I(对应 I=2),
最后显示一次 I(对应 I=2)。
6. procedure Break;
使用在循环语句中,完全结束本循环。如果位于 try
finally 块中,则 finally
end 块也会得到执
行。例如:
var I: Integer; begin for I := 0 to 2 do begin try if I > 0 then Break; ShowMessage(IntToStr(I)); finally ShowMessage('finally'); end; end; end;
上面例子的执行结果是:首先分别显示一次 I 和'finally'(对应 I=0),然后显示一次'finally'(对应
I=1)。
注意:如果使用了嵌套循环(即循环中包含子循环),那么 Continue 和 Break 只对它所属的子循
环起作用。