我知道您可以捕获“所有异常”并通过
打印异常try
{
//some code...
}catch(const std::exception& e) {
cout << e.what();
}
但这仅适用于从std :: exception派生的异常。 我想知道是否有办法从省略号捕获中获取一些信息
try
{
//some code...
}catch(...) {
// ??
}
如果机制与函数的省略号相同,那么我应该能够执行诸如转换va_list
的参数并尝试调用what()
方法之类的内容。
我还没有尝试过,但如果有人知道我会很高兴知道如何。
答案 0 :(得分:5)
从C ++ 11开始,您可以使用std::current_exception
&amp; c:
std::exception_ptr p;
try {
} catch(...) {
p = std::current_exception();
}
然后你可以通过演员表&amp; c来“检查”p
。
在早期的标准中,没有可移植的方法来检查catch(...)
站点的异常。
答案 1 :(得分:3)
抱歉,你不能这样做。您只能在catch
块中访问特定异常类型的异常对象。