【发布时间】:2017-06-02 16:47:55
【问题描述】:
按照我的理解,asserts 应该用于检查不应该发生的编程错误和文档条件,异常应该用于程序员无法控制的运行时错误(例如,获取key_not_found来自数据库的响应)
那么为什么std::future_errc::no_state 是一个东西?只有当访问没有有效状态的未来时,才能抛出具有该值的异常。这是程序员可以控制的。为什么不鼓励实现从失败的断言中止或在发生这种情况时中止呢?是否存在用户可以从无状态异常中恢复的情况?
例如,如果他们返回一个未从对 std::promise::get_future() 的调用中获取的未来,那么它将没有任何有效状态。或者两次致电get()。
【问题讨论】:
标签: c++ c++11 exception future assert