如何获取 Promise::set_Exception(x) 的参数?
我在几个地方找到了关于如何使用承诺的内容对 copy_exception 的引用,但我在当前的 FDIS 中找不到它。自这些博客以来,是否有其他方法可以使用 set_exception()
?
例如这里
void asyncFun(promise<int> intPromise)
{
int result;
try {
// calculate the result
intPromise.set_value(result);
} catch (MyException e) {
intPromise.set_exception(std::copy_exception(e)); // <- copy
}
}
我找到std::current_exception()< /代码> 此处。
catch(...)
{
p.set_exception(std::current_exception());
}
因此我的问题是:
- 即使我没有捕获“
...
”,我是否应该始终使用current_exception()
? - 或者是
copy_exception
有新的不同名称吗?
I found in several places on how a promise should be used references to copy_exception
, but I can not find it in the current FDIS. Is there an alternative way on how to use set_exception()
since those blogs?
For example here
void asyncFun(promise<int> intPromise)
{
int result;
try {
// calculate the result
intPromise.set_value(result);
} catch (MyException e) {
intPromise.set_exception(std::copy_exception(e)); // <- copy
}
}
I find std::current_exception()
here.
catch(...)
{
p.set_exception(std::current_exception());
}
Therefore my questions:
- Should I always use
current_exception()
, even when I do not catch "...
"? - Or is there new a different name for
copy_exception
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
copy_exception
有一个不同的名称。copy_exception
在标准化过程后期因对其实际作用的混淆而被重命名:使用
make_exception_ptr
或current_exception
都可以,具体取决于您要设置的异常。There is a different name for
copy_exception
.copy_exception
was renamed late in the standardization process over confusion of what it actually did:Use of either
make_exception_ptr
orcurrent_exception
is fine, depending on what exception you're trying to set.