Ziv*_*ivS 3 c++ try-catch ellipsis variadic
我知道你可以捕获"所有异常"并打印异常
try
{
//some code...
}catch(const std::exception& e) {
cout << e.what();
}
Run Code Online (Sandbox Code Playgroud)
但这仅适用于从std :: exception派生的异常.我想知道是否有办法从省略号捕获中获取一些信息
try
{
//some code...
}catch(...) {
// ??
}
Run Code Online (Sandbox Code Playgroud)
如果机制与函数的省略号相同,那么我应该能够执行类似的操作va_list并尝试调用what()方法.
我还没有尝试过,但如果有人知道我会很高兴知道如何.
从C++ 11开始,您可以使用std::current_exception&c:
std::exception_ptr p;
try {
} catch(...) {
p = std::current_exception();
}
Run Code Online (Sandbox Code Playgroud)
然后你可以p通过演员和c 来"检查" .
在早期的标准中,没有可移植的方法来检查catch(...)站点的异常.