From: http://www.cnblogs.com/mumuliang/archive/2012/03/22/2411521.html
inline HBITMAP CImage::Detach() throw()
inline HBITMAP CImage::Detach() throw()
它是函数提供者和使用者的一种君子协定,标明该函数不抛出任何异常。
之所以说是君子协定,是因为实际上内部实现是需要人肉确保。
如果一个标明throw()的函数内部发生了throw:
1,如果内部直接throw something,编译器会发现并指出;
2. 如果是内部调用了一个可能throw something的函数,编译器无法发现,运行时一旦这个内部的函数throw,程序会abort。
****
func() throw(type) ,会抛出某种异常
func() throw(),不会抛出
func() throw(...),可能是任何类型的异常
本文详细解释了C++中throw()声明的意义及其使用场景。它是一种君子协定,表明函数不会抛出任何异常。若标记为throw()的函数内部发生异常,则编译器会在直接throw时给出警告,而对于间接引发异常的情况则可能导致程序异常终止。
9048

被折叠的 条评论
为什么被折叠?



