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

Delphi 異常回應程式設計實戰:EDivByZero 除零保護與 EInOutError 檔案開啟建立雙重防禦範例

     編輯:Delphi

異常回應程式設計核心思想

利用異常處理機制不僅增強程式健全度,更提供簡化邏輯結構的途徑。核心在於:雖存在預防異常的確定方法,但不進行事前預防,改採事後處理,以簡化程式邏輯。自訂異常類別即為此類程式設計方式的體現。

範例一:EDivByZero 替代繁瑣的 if-then-else 除零檢查

連續除法運算若逐一檢查除數為零,程式碼極其繁瑣。使用 EDivByZero 異常大幅簡化:

function Calcu(x, y, z, a, b, c: Integer): Real;
begin
  try
    Result := x/a + y/b + z/c;
  except
    on EDivByZero do
      Result := 0;
  end;
end;

範例二:EInOutError 實現檔案開啟或建立的雙重保障

節錄自第 6.2.3 節「記錄檔的開啟與建立」:

procedure TRecFileForm.OpenButtonClick(Sender: TObject);
begin
  if OpenDialog1.Execute then
    FileName := OpenDialog1.FileName
  else
    Exit;
  AssignFile(MethodFile, FileName);
  try
    Reset(MethodFile);
    FileOpened := True;
  except
    on EInOutError do
    begin
      try
        if not FileExists(FileName) then
        begin
          Rewrite(MethodFile);
          FileOpened := True;
        end
        else
        begin
          FileOpened := False;
          MessageDlg('檔案無法開啟', mtWarning, [mbOK], 0);
        end;
      except
        on EInOutError do
        begin
          FileOpened := False;
          MessageDlg('檔案無法建立', mtWarning, [mbOK], 0);
        end;
      end;
    end;
  end;
  if not FileOpened then Exit;
  Count := FileSize(MethodFile);
  if Count > 0 then ChangeGrid;
  RecFileForm.Caption := FormCaption + ' -- ' + FileName;
  NewButton.Enabled := False;
  OpenButton.Enabled := False;
  CloseButton.Enabled := True;
end;

邏輯流程:嘗試開啟既有檔案(Reset)→ 失敗則檢查檔案是否存在 → 不存在則建立新檔(Rewrite)→ 存在卻無法開啟則報錯 → 建立新檔也失敗則報錯。雙層 try...except 結構實現完整容錯。

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