利用異常處理機制不僅增強程式健全度,更提供簡化邏輯結構的途徑。核心在於:雖存在預防異常的確定方法,但不進行事前預防,改採事後處理,以簡化程式邏輯。自訂異常類別即為此類程式設計方式的體現。
連續除法運算若逐一檢查除數為零,程式碼極其繁瑣。使用 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;
節錄自第 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 結構實現完整容錯。