cpp:使用省略号捕获异常并查看信息

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()方法.

我还没有尝试过,但如果有人知道我会很高兴知道如何.

Mik*_*our 6

抱歉,你不能这样做。您只能访问catch特定异常类型的块中的异常对象。


Bat*_*eba 5

从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(...)站点的异常.

  • 你写的“&amp;c”是什么? (3认同)