从C++函数声明可能的异常抛出有什么好处?换句话说,添加关键字throw()
实际上做了什么?
我已经读过一个函数声明,例如void do_something() throw();
应该保证没有异常来自do_something()
函数; 然而,这似乎并不适用于内部调用的函数do_something()
,从而使其成为弱保证.
请概述此语言功能的有用性(以及最佳用例).
没有人比萨特更好地解释这一点
http://www.ddj.com/architect/184401544
简短的版本是
永远不要编写异常规范
除了可能是空的
unexpected()
如果函数试图抛出不在其异常列表中的异常,则C++标准要求调用该函数.MSDN的简短描述如下:http://msdn.microsoft.com/en-us/library/awbt5tew(VS.80).aspx
大多数编译器实际上并不支持这种C++功能.