【发布时间】:2010-11-12 06:44:24
【问题描述】:
是否可以使自定义流像标准流一样工作以解决错误?那就是默认使用 good/fail/bad/eof 位而不是异常?
boost 文档只提到为流错误抛出 std::failure 并让其他错误传播(例如,尝试分配缓冲区的 badalloc),但是 boost 代码似乎没有捕获这些,而是依赖于用户处理它们的代码,但是我所有现有的代码都依赖于 good()、bad() 等方法和 clear() 方法,以防出错后需要重试。
【问题讨论】:
-
你在看哪个 Boost 文档?
-
In boost.org/doc/libs/1_39_0/libs/iostreams/doc/guide/… "第三种可能性是遵循 std::basic_streambuf 的示例,并允许过滤器和设备的成员函数通过抛出异常或返回指定的错误指示符来发出错误信号。这被拒绝了,因为它会使各种过滤器和设备概念的规范变得复杂,并使 stream_buffer 的内部更难以理解和维护。”
-
@akramer:您可能应该让您的评论成为答案。
标签: c++ boost error-handling iostream boost-iostreams