C++函數后面的throw()


看CImage函數實現的時候發現了這么個東東

 

 inline HBITMAP CImage::Detach() throw()

 

它是函數提供者和使用者的一種君子協定,標明該函數不拋出任何異常。

之所以說是君子協定,是因為實際上內部實現是需要人肉確保。 

如果一個標明throw()的函數內部發生了throw:

1,如果內部直接throw something,編譯器會發現並指出;

2. 如果是內部調用了一個可能throw something的函數,編譯器無法發現,運行時一旦這個內部的函數throw,程序會abort。

 

**** 

func() throw(type) ,會拋出某種異常

func() throw(),不會拋出

func() throw(...),可能是任何類型的異常


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM