讀書筆記《Effective c++》 條款08 別讓異常逃離析構函數


析構函數拋出異常會導致後面的清理資源語句得不到機會執行,會導致資源泄漏。

結論:

a.析構函數絕對不要吐出異常。如果一個被析構函數調用的函數可能拋出異常,析構函數應該捕捉任何異常,然後吞下(不傳播)他們或者結束程序。

b.如果客戶需要對某個操作函數運行期間拋出異常做出反應,那麼class應該提供一個普通函數(而非在析構函數中)執行該操作,例如:

對於一個連接對象DBConnect他應該公開一個close函數,這個函數可能會拋出異常,應該讓客戶去調用close,而不是自己在析構函數中調用close。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章