C++ Boost io 流,错误处理

标签 c++ boost error-handling iostream boost-iostreams

是否可以使自定义流在错误方面像标准流一样工作?那就是默认使用 good/fail/bad/eof 位而不是异常(exception)?

boost 文档只提到为流错误抛出 std::failure 并让其他错误传播(例如,尝试分配缓冲区的 badalloc),但是 boost 代码似乎没有捕捉到这些,而是​​依赖于用户代码来处理它们,但我现有的所有代码都依赖于 good()、bad() 等方法和 clear() 方法,以防出错后需要重试。

最佳答案

来自 http://www.trip.net/~bobwb/cppnotes/lec08.htm

可以使用以下方式设置错误状态:

无效清除(iostate = 0);

默认值零导致 ios_base::goodbit 被设置。

清除();

因此等同于

清除(0);

相当于

清除(ios_base::goodbit);

注意 ios_base::goodbit 是一个非零值。 clear() 可用于将其他位之一设置为程序员针对特定对象的 operator>>() 代码的一部分。例如:

if (bad_char) is.clear(ios_base::badbit);//设置 istream 的 badbit

关于C++ Boost io 流,错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1152913/

相关文章:

ruby-on-rails - Rake 测试失败 - RunTimeError

asp.net-mvc - 在ASP.NET MVC中,如何重构try/catch并返回JSON错误消息?

c++ - 从文本文件读取结构

c++ - 如何将 boost asio 接受器限制为本地主机和/或本地网络?

c++ - 从游戏的控制台窗口输入

c++ - 在 operator()() 中对具有状态和两个参数的函数对象使用 boost bind

c++ - experimental::optional "nullopt_t"命名原理

android - Android中错误处理的正确方法

c++ - OpenCV 中 VideoCapture 对象的状态

c++ - wxwidgets 自定义事件不会传播到父窗口