用过程辅助实现流程控制

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 只对它所属的子循
环起作用。

你可能感兴趣的:(pascal)