C 異常規範

2021-08-04 20:47:05 字數 653 閱讀 8192

◆ 1、異常規範(exception specification)是指:提供了一種方案,可以隨著函式宣告列出該函式可能丟擲的異常,並保證該函式不會丟擲任何其他型別的異常。例如,在stack類定義中可有:

void push(const t&data) throw(pushonfull) ;

t pop() throw(poponempty); //紅色部分是異常規範

成員函式類內宣告和類外定義必須在兩處都有相同的異常規範,同樣的異常規範。

乙個函式的異常規範的違例只能在執行時才能被檢測出來。如果在執行時,函式丟擲了乙個沒有被列在它的異常規範中的異常時(並且函式中所丟擲的異常,沒有在該函式內部處理)則系統呼叫c++標準庫中定義的函式unexpected()。

僅當函式中所丟擲的異常,沒有在該函式內部處理,而是逆呼叫鏈回溯尋找匹配的catch子句的時候,異常規範才起作用。如果異常規範形式為throw(),則表示不得丟擲任何異常。

2、虛函式中的異常規範

派生類的虛函式的異常規範必須與基類虛函式的異常一樣或更嚴格。因為當派生類的虛函式被指向基類型別的指標呼叫時,保證不會違背基類成員函式的異常規範。例如:

class cbase

;class cderived:public cbase

C 異常規範

1 異常規範 exception specification 是指 提供了一種方案,可以隨著函式宣告列出該函式可能丟擲的異常,並保證該函式不會丟擲任何其他型別的異常。例如,在stack類定義中可有 void push const t data throw pushonfull t pop throw...

C 中的異常處理機制以及異常規範

以下 執行環境為64位系統下的vs2013 c 中的異常情況 語法錯誤 編譯錯誤 比如變數未定義 括號不匹配 關鍵字拼寫錯誤等等編譯器在編譯時能發現的錯誤,這類錯誤可以及時被編譯器發現,而且可以及時知道出錯的位置及原因,方便改正。執行時錯誤 比如陣列下標越界 系統記憶體不足等等。這類錯誤不易被程式設...

異常處理規範

date 2009.01.04 一,概述 創造可信賴的,健壯的軟體並不是一件不可能的事情。大部分的商業軟體,在長時間可以無重大故障的工作,但它們並非沒有任何的錯誤,只是擁有低出錯率,你可以迅速理解出錯原因然後快速搞定它,並且,它不會因為外部錯誤而毀壞資料。軟體中有錯誤是可以原諒的,甚至是可以預料到的...