首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::future no_state exception vs assertion

std::future no_state exception vs assertion
EN

Stack Overflow用户
提问于 2017-06-03 00:47:56
回答 1查看 264关注 0票数 1

在我看来,assert应该用来检查编程错误和记录不应该发生的条件,异常应该用来处理程序员无法控制的运行时错误(例如,从数据库获取key_not_found响应)。

那么为什么std::future_errc::no_state是一种东西呢?只有在访问不具有有效状态的未来时,才能引发具有该值的异常。这是程序员可以控制的。为什么不鼓励实现从失败的断言中中止,或者在发生这种情况时中止呢?是否存在用户能够从无状态异常中恢复的情况?

例如,如果它们返回一个未从std::promise::get_future()调用中获取的未来,那么它将不具有任何有效状态。或者两次给未来的get()打电话。

EN

回答 1

Stack Overflow用户

发布于 2017-06-03 00:53:55

assert离子主要是一种调试/开发时的特性。在编译代码的发布版本时,它们通常会被省略。因此,虽然拥有它们很好,并且可以在您开发代码时记录不变量和其他内容(并帮助您捕获bug),但您不能依赖于它们始终处于启用状态。另一方面,std::future_errc::no_state不仅仅是一个调试的东西,而且会一直在那里(当然,除非你是那些在构建时禁用了异常(和rtti)的人之一-但在这种情况下,我没有什么可提供的,也没有同情心)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44333854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档