Object Pascal 定义以下几个过程来辅助流程控制:
1. procedure Abort;
激发一个静态异常(即异常信息不显示)并退出当前过程或者 tryexcept 块。例如:
procedure TForm1.Button2Click(Sender: TObject);
begin
if True then
Abort; procedure TForm1.Button2Click(Sender: TObject);
begin
try
if True then
Abort ;
except
//Abort激发的异常被捕捉,因此执行exceptend中的异常处理代码
ShowMessage('Abort');
end;
ShowMessage('处理完毕');
//执行,因为异常已经被处理。如果使用tryfinally,则这句不会被执行
end;
//激发一个静态异常后直接退出Button2Click,不会执行后的
//ShowMessage语句
ShowMessage('处理完毕');
end;
如果 Abort 被包含在一个 tryexcept 块中,则只退出 tryexcept,然后执行 exceptend 块,最
后再继续执行下面的语句。如果包含在 tryfinally 块中,则执行 finallyend 块然后退出过程。如:
procedure TForm1.Button2Click(Sender: TObject);
begin
try
if True then
Abort ;
except
//Abort激发的异常被捕捉,因此执行exceptend中的异常处理代码
ShowMessage('Abort');
end;
ShowMessage('处理完毕');
//执行,因为异常已经被处理。如果使用tryfinally,则这句不会被执行
end;
2. procedure Exit;
正常退出过程。如果处在 tryfinally 块中,则执行 finallyend 块然后退出过程。例如:
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;
使用在循环语句中,结束当前循环并进入下一个循环。如果位于 tryfinally 块中,则会首先执行
finallyend 再进入下一个循环。例如:
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;
使用在循环语句中,完全结束本循环。如果位于 tryfinally 块中,则 finallyend 块也会得到执
行。例如:
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 只对它所属的子循
环起作用。