c++ - 为什么即使专门启用了异常,std::ifstream 也不会抛出异常?
问题描述
因此,默认情况下std::ifstream
,当您打开无效的文件路径时不会引发异常。它相当安静地失败,如果您不使用该fail()
方法或类似方法进行检查,它很容易被忽视,这是非常糟糕的。
由于我想在任何类型的故障中获取异常,以便自动通知我,我尝试使用此处exceptions()
建议的方法:
std::ifstream input_stream;
input_stream.exceptions(std::ifstream::badbit);
input_stream.open(file_path);
令我惊讶的是,如果文件路径不存在,这仍然不会引发异常。我尝试使用std::ios::badbit
,但结果相同。
我Ubuntu
用GCC
.
为什么这不能按预期工作?
解决方案
失败时,open()
设置failbit
,而不是badbit
。您不是要求ifstream
在failbit
.
推荐阅读
- python - 如何从 seaborn / matplotlib 图中删除或隐藏 x 轴标签
- firebase - 如何重定向到 next.js 中受限页面的登录页面?
- java - 将 JDK 更改为 11 后更新构建 Allure 报告的依赖项
- javascript - 如何使用 HTML 输入来提供 JavaScript 类
- python - 在 Python 中从 .txt 文件创建方阵
- unix - Unix:基于公共列连接多个具有多个值的列?
- java - Java:如何将二进制字符串转换为图像?
- jquery - 如何在一个循环中为一个父类的不同类获得不同的样式我尝试这样做...使用 jquery ,
- ajax - 在本地离线 html 文件中通过 ajax 加载本地 csv
- eigen - 如何启用用 Eigen 源代码编写的稀疏矩阵/密集向量乘法的并行化?