程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 第十二章-異常處理與程序調試(二)(4)

第十二章-異常處理與程序調試(二)(4)

編輯:Delphi

12.3.6 利用異常響應編程 

利用異常處理機制不僅能使程序更加健壯,而且也提供了一種使程序更加簡捷、明了的途徑。事實上,使用自定義異常類就是一種利用異常響應編程的方式。這裡我們再討論幾個利用標准異常類編程的例子。

比如為了防止零作除數,可以在進行除法運算前使用if…then…else語句。但如果有一系列這樣的語句則繁瑣程度是令人難以忍受的。這時候我們可能傾向於使用EDivByZero異常。例如如下一段程序就遠比用if…then…else實現簡捷明了。 

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 FileExists(FileName) = False 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 FileOpened = False then exit;

Count := FileSize(MethodFile);

if Count > 0 then

ChangeGrid;

RecFileForm.Caption := FormCaption+' -- '+FileName;

NewButton.Enabled := False;

OpenButton.Enabled := False;

CloseButton.Enabled := True;

end; 

總之,利用異常響應編程的中心思想是雖然存在預防異常發生的確定方法,但卻對異常的產生並不進行事前預防,而是進行事後處理,並以此來簡化程序的邏輯結構。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved