程式流程的控制 Abort Exit Halt RunError Continue Break Sleep

del88發表於2024-03-17

Break

退出當前迴圈體,包括for ,while, repeat等迴圈體;

Continue

用於從For語句,while語句或repeat語句強行結束本次迴圈,並開始下一次迴圈;

Exit

跳出當前程式碼塊,也就是當前函式,跳出後是要繼續向下執行的(如果有後續程式碼),

若該程式碼為主程式,則終止該程式,若是函式或過程,則立即退出過程或函式;

正常退出,如果在 try 塊中, finally 的程式會執行;

舉例:

procedure TForm2.btn1Click(Sender: TObject);
begin
  try
    try
      Exit;

    except
      OutputDebugString('except'); //這裡不會,因為沒有發生異常,是正常退出
    end;
  finally
    OutputDebugString('finaly');  //這裡會輸出
  end;
end;

Abort

激發異常退出,安靜處理,就是不彈框提示報錯,是一個不出現對話方塊的異常;如果在 try 塊中,except 和 finally 的程式會執行,舉例:

procedure TForm2.btn1Click(Sender: TObject);
begin
  try
    try
      Abort;

    except
      OutputDebugString('except'); // 這裡會輸出
    end;
  finally
    OutputDebugString('finaly');  //這裡會輸出
  end;
end;

image

Abort 是從 EAbort 過來的,可以激發 exception,其實質就是 Abort = RaiseException(),是一個不出現對話方塊的異常。所以 Abort 的行為和異常是一樣的,其程式碼執行順序也是follow異常的流程。

image

image

Exit 與 Abort 區別

舉例1:

try
  (1) //執行了
  abort;
  (2) //不執行
except
  (3) //執行了
end;
try
  (1) //執行了
  exit;
  (2) //不執行
except
  (3) //不執行了
end;

用 Abort 能夠執行 except 裡邊的程式碼,但是如果用 Exit,就直接離開,不管 except。

示例2:

procedure p1;
begin
  p2;
  p3;
end;
procedure p2;
begin
  abort; //exit;
end;
procedure p3;
begin
  //showmessage()..
end;

如果用 Abort,則執行不到 P3,如果用 Exit 就能夠執行到 P3;

Halt

非正常結束程式,可有 Integer 引數給作業系統,windows 程式一般使用:Application.Terminate,用於強行終止應用程式的執行,返回作業系統(非正常退出方式)。

RunError

生成一個執行時錯誤,並退出程式。引數是 Byte 型,預設0,終止程式的執行,併產生執行錯誤(返回錯誤程式碼);

Sleep

暫定執行緒多少毫秒;

相關文章