提问人:ZivS 提问时间:9/3/2014 更新时间:6/13/2023 访问量:1598
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()
我还没有尝试过,但如果有人知道这种方式,我会很高兴知道怎么做。
答:
6赞
Mike Seymour
9/3/2014
#1
对不起,你不能那样做。您只能访问特定异常类型的块中的异常对象。catch
9赞
Bathsheba
7/25/2017
#2
从 C++11 及更高版本,可以使用 &c:std::current_exception
std::exception_ptr p;
try {
} catch(...) {
p = std::current_exception();
}
然后,您可以通过进行投射和 c 来“检查”,尽管不是以便携式方式。p
在早期的标准中,除了用 重新抛出异常之外,没有在站点上与异常相交的可移植方法。catch(...)
throw;
评论
3赞
ZivS
7/25/2017
你写的是什么?&c
0赞
ZivS
7/26/2017
这对我来说是新的(&c):)你能在你的答案中说明你能用它做什么(有什么好处)吗?exception_ptr
0赞
rustyx
11/18/2022
你不能从中得到任何细节,你只能重新抛出它。std::exception_ptr
评论