C++ 函数声明可以包含异常部分。例如:
void remove(int pos)throw(invalid_argument);
表示remove函数有可能会抛出一个invalid_argumnet异常。
void disp()const throw();
表示disp函数不会抛出任何异常,这种写法本质上没有任何用处,实际上仍然可以往外抛异常。
如果某个C++函数具有以下声明,
void f()throw(...);
则说明该函数可以抛出任意类型的异常。实际上,在 C++ 中,往外抛 int
、double
什么的也是可以的。
以上写法在新的 C++ 标准(2011年以后的)中均被废止了,也就是新的C++标准并不建议直接声明抛出类型。如果希望不抛出任何异常,可以使用以下写法:
void disp()const noexcept;
如果有可能抛出异常,则
void remove(int pos)noexcept(false);