标签: c++ exception throw
以下代码毫无意义。
void c() throw (XA) { throw XB(); throw XA(); }
我指定函数c它应该抛出一个XA类但它仍然抛出一个XB并且XB被捕获在main中。函数声明旁边的“throw(XA)”有什么意义?
答案 0 :(得分:0)
以下声明的目标不是忽略 XA以外的任何例外。
XA
void c() throw (XA)
它将抛出XA个异常(或其派生类型),并为其他异常调用std::unexpected。
std::unexpected
如果此函数抛出X以外的某种类型的异常,则 函数调用std :: unexpected而不是查找处理程序或 调用std :: terminate。
有关详情read本和this。此外,不推荐在函数声明中使用异常规范。
因此,默认情况下,您的代码会调用std::unexpected或std::terminate。
std::terminate