Delphi異常處理的基本原則和方法

來源:互聯網
上載者:User
 

一、異常的來源。

在Delphi的應用程式中,下列的情況都比較有可能產生異常。

(1)檔案處理

(2)記憶體配置

(3)Windows資源

(4)運行時建立對象和表單

(5)硬體和作業系統衝突

?

二、異常的處理。

(1)tryexceptend;

在try體內的代碼發生異常時,系統將轉向except部分進行異常的處理。這是Delphi處理異常的最基本的方式之一。

?

(2)tryfinallyend;

這種異常處理結構一般用於保護Windows的資源分派等方面,它確保了無論try體內的代碼是否發生異常,都需要由系統進行最後的統一處理的一些Windows對象的正確處理。

和try…except…end不同,該結構的finally部分總被執行。

?

(3)不存在try…except…finally…end結構來既處理異常,又保護資源分派的結構,但是,try…except…end結構允許嵌套到try…finally…end結構中,從而實現既處理異常,又保護資源的分配。

?

?

三、異常的精確處理。

(1)定義一個異常。

在Delphi中,每個異常都是Exception[1]類的一個衍生類別[2]。因此,定義一個異常就是定義一個Exception類的衍生類別。

type EMyException = class(Exception);

當然,基類可以是Exception或者Exception的任何一個任何層次的衍生類別。

?

(2)在程式中拋出一個異常。

根據不同的情況拋出異常是使用異常的最基本的模式。在Delphi中,由raise語句來實現。

【文法】raise 異常類.Create(‘異常的預設說明’);

?

(3)在try…except…end中更加精確的捕捉異常。

使用on E:異常類 do…結構可以在do體內處理特定異常類所拋出的異常。

?

四、異常的調試。

在Delphi IDE中,解除“Debugger Options”(可以使用菜單Tools—>Debugger Options…進行訪問)中的Integrated Debugging複選框的勾選狀態可以進行異常的調試。

?

五、異常的補充說明。

(1)每一段程式都有可能產生錯誤!這是軟體業的一個不容置疑的現象和規律。事實上,傳統的if…else…結構完全可以解決所有的錯誤,使用Exception機制也沒能夠迴避在最原始的層次,通過遍曆可能的情況來產生異常的做法,那麼,為什麼還要異常機制?

答案很清楚:異常提供了一種更加靈活和開放的方式,使得後來的編程者可以來根據實際的情況處理這種錯誤,而不是使用預先設定好的處理結果。實際上,我覺得,這也就是異常機制的核心。



[1] Exception類的定義在SysUtils單元中。

[2] Delphi也支援不從Exception繼承的異常類,但是我覺得這麼做並不十分的明智。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.