c++ - 获取 std::fstream 失败错误消息和/或异常

标签 c++

我正在使用 fstream。有什么方法可以获取失败消息/异常?

例如,如果我无法打开文件?

最佳答案

默认情况下,Streams 不会在出错时抛出异常,它们会设置标志。您可以使用流的 exception() 成员函数让它们抛出异常:

ifstream ifs;
ifs.exceptions( std::ios::failbit );   // throw if failbit get set

理论上,你可以做这样的事情:

try {
  int x;
  ifs >> x;
}
catch( const std::exception & ex ) {
   std::cerr << "Could not convert to int - reason is " 
                  << ex.what();
}

不幸的是,C++ 标准没有指定抛出的异常包含任何错误消息,因此您在此处处于特定于实现的领域。

关于c++ - 获取 std::fstream 失败错误消息和/或异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8438302/

相关文章:

c++ - 为自定义路径类型设置 boost property_tree

c++ - Opengl 相机和乘法矩阵

c++ - STL 算法 : Why no additional interface for containers (additional to iterator pairs)?

c++ - Boost.Asio 段错误,不知道为什么

c++ - if constexpr 中的 requires 子句问题

c++ - 如何将 BYTE 数组中的两个字节作为 int (或类似的东西)存储?

c++ - 消除 C++ 代码中的重复?

c++ - 如何创建一个 unordered_set 的 shared_ptr 对象?

c++ - 返回字符串中的最后一个元音

c++ - 如何在不违反类型别名规则的情况下解释消息负载?