当我在Windows 10上的Visual Studio 2015中运行此代码时,看不到输出
That was unexpected
它适用于Linux上的gcc 5.3。
class X {};
class Y {};
class Z : public X {};
class W {};
void f() throw(X, Y) // list what exceptions can be thrown
{
int n = 0;
if (n) throw X(); // OK
if (n) throw Z(); // also OK
throw W(); // will call std::unexpected()
}
int main() {
std::set_unexpected([] {
std::cout << "That was unexpected" << std::endl;
std::abort();
});
f();
}
答案 0 :(得分:4)
Visual C ++从未实现过异常规范,但接受了语法。
无论如何,它们在C ++ 11及更高版本中已被弃用。
可能是主Windows C ++编译器不一致的结果。
同样,我记得Visual C ++从未实现过std::uncaught_exception
,但对此我不太确定。在使用和依赖之前值得检查。 ... Doc-checked :{C ++ 2015的the documentation声明
“在设备上,
uncaught_exception
仅在Windows CE 5.00及更高版本(包括Windows Mobile 2005平台)上受支持
因此,在桌面平台上,它显然得到了支持。