5. noexcept 说明符
C++11 中提供了 noexcept 关键字用于异常相关的声明和运算。
noexcept 关键字有两个作用:
- 作为说明符,声明函数(或成员函数)一定不会抛出异常(有利于编译器优化)。
- 作为运算符,在编译期检查表达式是否可能抛出异常,返回 bool 值。
1. 作为说明符的语法:
void 函数名() noexcept {
// 如果这里真的抛出了异常,程序会直接调用 std::terminate() 终止
}
如:
void may_throw() { throw 1; } // 可能抛出异常的函数
void no_throw() noexcept {} // 一定不抛出异常的函数
2. 作为运算符的语法:
noexcept(表达式)
如:
cout << noexcept(may_throw()) << endl; // 打印:false
cout << noexcept(no_throw()) << endl; // 打印:true
cout << noexcept(1 + 2) << endl; // true(基本运算不会抛异常)