【发布时间】:2014-07-25 12:01:20
【问题描述】:
我有这段代码,只是想知道为什么它没有抛出异常(或者在这种情况下应该抛出异常)。
如果函数无法打开文件,则会为流设置故障位状态标志(如果该状态标志是使用成员异常注册的,则可能会抛出 ios_base::failure)。
#include <fstream>
#include <exception>
#include <iostream>
int main() {
std::ofstream fs;
try {
fs.open("/non-existing-root-file");
} catch (const std::ios_base::failure& e) {
std::cout << e.what() << std::endl;
}
if (fs.is_open())
std::cout << "is open" << std::endl;
else
std::cout << "is not open" << std::endl;
return 0;
}
【问题讨论】: