07-异常规范方面的修改
18.1.5 异常规范方面的修改
以前,C++提供了一种语法,可用于指出函数可能引发哪些异常(参见第15章):
void f501(int) throw(bad_dog); // can throw type bad_dog exception
void f733(long long) throw(); // doesn't throw an exception
与auto_ptr一样,C++编程社区的集体经验表明,异常规范的效果没有预期的好。因此,C++11摒弃的异常规范。然而,标准委员会认为,指出函数不会引发异常有一定的价值,他们为此添加了关键字noexcept:
void f875(short, short) noexcept; // doesn't throw an exception