在书中看到一段代码:
T& operator[](int i) throw(RangeError)
{
if(i >= 0 && i < sz) return ptr[i];
throw RangeError();
}
Run Code Online (Sandbox Code Playgroud)
throw(RangeError)是什么意思?函数声明的后面,我知道我们可以添加常量,或= 0(纯虚拟的),但我从来没有见过掷(...)
这是一个例外规范.这意味着你的函数告诉每个人它有一个有限的事物列表.不幸的是,但没有什么能阻止你实际从函数中抛出任何其他内容,但是如果在运行时抛出了意外的东西,那么unexpected()就会被调用.新的C++标准中已删除了异常规范.
void f() throw(); //I promise not to throw anything
void g() throw(A, B, C); // I promise not to throw anything except for A, B, or C
Run Code Online (Sandbox Code Playgroud)
与const限定符不同,异常规范不是函数类型的一部分.