如何构造一个可以抛出异常的对象?

这将超出范围,所以我不能使用它。

try
{
    SomeClass someObject({});
}
catch (std::exception & e)
{

}

someObject(x); // someObject does not exist because it goes out of scope

解决方案:

这里有一个有用的应用 std::optional.

std::optional<SomeClass> maybe_someobject;

try {
     maybe_someobject.emplace( /* Constructor parameters go here */);
} catch (...  /* or something specific */)
{
     /* catch exceptions */
     return; // Do not pass "Go". Do not collect $200.
}

SomeClass &someobject=maybe_someobject.value();

// Use someobject normally, at this point. Existing code will have to look
// very hard to be able to tell the difference.

这增加了一点开销,但它是相当小的,但你保留了完整的类型和RAII安全。

给TA打赏
共{{data.count}}人
人已打赏
未分类

没有找到名为'scrapy.Spider'的模块。

2022-9-8 10:49:36

未分类

在SwiftUI中为TextField设置初始值--比较新旧值。

2022-9-8 10:49:38

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索