因此,默认情况下,std::ifstream当您打开无效的文件路径时不会引发异常。它会默默地失败,如果您不使用该fail()方法或类似的方法进行检查,它很容易被忽视,这是非常糟糕的。
由于我想获得任何类型故障的异常,以便可以自动通知我,因此我尝试使用此处exceptions()建议的方法:
std::ifstream input_stream;
input_stream.exceptions(std::ifstream::badbit);
input_stream.open(file_path);
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,如果文件路径不存在,这仍然不会引发异常。我尝试使用std::ios::badbit,但结果相同。
我Ubuntu用进行了测试GCC。
为什么这不能按预期工作?