我正在阅读这个页面http://www.cplusplus.com/doc/tutorial/exceptions.html 它说如果我写函数()throw(); 该函数不能抛出任何异常.我尝试在msvc 2005中编写throw(),throw(int),throw(),什么都没有.每个都有完全相同的结果.没有.我扔了int,char*,另一种类型,它都被捕获了同样的方式.看起来投掷根本不影响它.function()throw()实际上做了什么?
有关C++异常规范和Microsoft实现的详细信息,请参阅此文章:
Microsoft Visual C++ 7.1忽略异常规范,除非它们为空.空异常规范相当于
__declspec(nothrow)
,它们可以帮助编译器减少代码大小.[...]如果它看到一个空的异常规范,它会假设你知道你在做什么,并优化掉处理异常的机制.如果你的功能无论如何都会抛出 - 好吧,羞辱你.只有当你100%肯定你的功能不抛出时才使用此功能.