首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 異常回應核心語法:on...do 判斷、異常實例運用、else 預設回應與 Try...Except 結構詳解

     編輯:Delphi

Try...Except 異常回應保護區塊

try ... except ... end 形成異常回應保護區塊。與 finally 不同:正常情況 except 區塊不執行,異常發生時自動跳入 except 進行處理。異常回應後自動清除。

範例:檔案開啟與刪除異常處理

uses Dialogs;
var F: TextFile;
begin
  OpenDialog1.Title := 'Delete File';
  if OpenDialog1.Execute then
  begin
    AssignFile(F, OpenDialog1.FileName);
    try
      Reset(F);
      if MessageDlg('Erase ' + OpenDialog1.FileName + '?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
      begin
        CloseFile(F);
        Erase(F);
      end;
    except
      on EInOutError do
        MessageDlg('File I/O error.', mtError, [mbOK], 0);
      on EAccessDenied do
        MessageDlg('File access denied.', mtError, [mbOK], 0);
    end;
  end;
end.

關鍵規則:except 後陳述式必須包含於 on ... do 區塊中,不可單獨存在(此點與 finally 不同)。

使用異常實例取得詳細資訊

基本形式 on ExceptionType do 僅用類別型別。若需存取異常訊息、錯誤代碼等實例資料,需宣告暫存變數:

on EInstance: ExceptionType do ...

回應區塊內可像操作普通物件般存取其資料成員,區塊外不認可。

範例:取得異常訊息自訂顯示

procedure TErrorForm.Button1Click(Sender: TObject);
begin
  try
    ScrollBar1.Max := ScrollBar1.Min - 1;  { 觸發 EInvalidOperation }
  except
    on E: EInvalidOperation do
      MessageDlg('Ignoring Exception: ' + E.Message, mtInformation, [mbOK], 0);
  end;
end;

提供預設回應:else 子句

回應區塊通常僅處理特定異常。若發生未處理異常,會退出當前回應區塊且異常保留。為確保所有異常在當前區塊被清除,可定義預設回應:

try
  { 程式正常功能 }
except
  on ESomething do
    { 回應特定異常 }
  else
    { 提供預設回應 }
end;

else 可回應任何異常(含未知異常),預設回應建議僅顯示訊息框等輕量處理,避免改變程式狀態或資料。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved