cpp:用省略号捕获异常并查看信息
cpp: catch exception with ellipsis and see the information
我知道你可以捕获"所有异常"并通过打印异常
try
{
//some code...
}catch(const std::exception& e) {
cout << e.what();
}
但这只是针对从std::exception派生的异常。我想知道是否有一种方法可以从省略号捕获中获得一些信息
try
{
//some code...
}catch(...) {
// ??
}
如果该机制与函数的省略号相同,那么我应该能够执行类似于强制转换va_list
的参数并尝试调用what()
方法的操作。
我还没有试过,但如果有人知道怎么做,我会很兴奋。
从C++11及以后,您可以使用std::current_exception
&c:
std::exception_ptr p;
try {
} catch(...) {
p = std::current_exception();
}
然后你可以"检查";CCD_ 4;c、 尽管不是以可移植的方式。
在早期的标准中,除了用throw;
重新抛出异常之外,没有在catch(...)
站点交叉异常的可移植方法。
对不起,你不能这么做。您只能访问特定异常类型的catch
块中的异常对象。
相关文章:
- 当类定义不可见时捕获异常
- 来自 Android 应用程序内部的 boost 类型的 boost::wrapexcept<boost::system::system_error> 的未捕获异常
- 如何通过 pybind11 从 python 中的C++中捕获异常?
- 信号后未捕获异常
- 捕获异常后如何退出程序执行
- C++ 捕获异常后进行清理的标准方法是什么?
- 使用模板类引发和捕获异常
- E/libc++abi:终止于类型为google::protobuf::FatalException的未捕获异常
- 如果在生成 std::thread 后引发,则未捕获异常
- C++ 未捕获异常,程序将终止并中止
- C++程序在第一次尝试时会给出垃圾,但如果它捕获异常并重试,则会给出适当的值
- 仅捕获异常就可以检测所有二进制文件在C 中读取错误是否足够
- 如何捕获 I/O 异常(确切地说是 I/O,而不是 std::exception)
- 为什么捕获异常播放允许尾括号
- throw() 函数应该总是在异常时展开堆栈并允许捕获异常还是必须调用 std::terminate ?
- 寻求与类型为 std::invalid_argument 的未捕获异常相关的运行时错误的建议: stoi:无转换
- 如何从调用函数中捕获异常
- 当用户在字符数组中输入整数值时捕获异常
- C++按值捕获异常时的示例是不好的
- cpp:用省略号捕获异常并查看信息