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

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

編輯:Delphi

12.3.3 響應一族異常 

諸如

  on ExceptionType do

的異常響應語句不僅可響應本類異常,而且可以響應子類異常。對於象EIntError、EMathError等系統不會引發的異常,它們將只響應其子類異常。而對於象

on Exception do

這樣的語句將會對任何異常進行響應。

下面一段代碼對整數越界異常進行單獨處理,而對其它整數異常進行統一處理: 

try

{整數運算}

except

on ERangeError do

{越界處理}

on EIntError do

{其它整數異常處理}

end; 

由於異常在處理後即被清除,因而上面的代碼可保證不會使ERangeError異常被多次處理。假如顛倒兩條響應語句的順序,則ERangeError異常響應將永遠沒有被執行的機會。 

由於異常在處理後即被清除,因而當希望對異常進行多次處理時就需要使用保留字raise來重引發一個當前異常。

下面的代碼同時使用了異常響應和異常保護。異常響應用於設置變量的值,異常保護用於釋放資源。當異常響應結束時利用raise重引發一個當前異常。 

var

APointer: Pointer ;

AInt , ADiv: Integer;

begin

ADiv := 0;

GetMem ( APointer , 1024 );

try

try

AInt := 10 div ADiv ;

except

on EDivByZero do

begin

AInt := 0 ;

raise;

end;

end;

finally

FreeMem ( APointer , 1024 );

end;

end;

上面一段代碼體現了異常處理的嵌套。異常保護、異常響應可以單獨嵌套也可以如上例所示的那樣相互嵌套。 

12.3.5 自定義異常類的應用 

利用Delphi的異常類機制我們可以定義自己的異常類來處理程序執行中的異常情況。同標准異常不同的是:這種異常情況並不是相對於系統的正常運行,而是應用程序的預設定狀態。比如輸入一個非法的口令、輸入數據值超出設定范圍、計算結果偏離預計值等等。

使用自定義異常需要:

1.自己定義一個異常對象類;

2.自己引發一個異常。 

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