是否可以使用文件打开的例外作为使用.is_open()
?
例如:
ifstream input;
try{
input.open("somefile.txt");
}catch(someException){
//Catch exception here
}
如果是,someException
是什么类型的?
答案 0 :(得分:34)
http://en.cppreference.com/w/cpp/io/basic_ios/exceptions
另请阅读此11085151
引用的答案article// ios::exceptions
#include <iostream>
#include <fstream>
using namespace std;
void do_something_with(char ch) {} // Process the character
int main () {
ifstream file;
file.exceptions ( ifstream::badbit ); // No need to check failbit
try {
file.open ("test.txt");
char ch;
while (file.get(ch)) do_something_with(ch);
// for line-oriented input use file.getline(s)
}
catch (const ifstream::failure& e) {
cout << "Exception opening/reading file";
}
file.close();
return 0;
}
上运行的示例代码
编辑:通过const引用2145147
捕获异常编辑:从异常集中删除了failbit。添加了网址以获得更好的答案。
答案 1 :(得分:0)
来自the cppreference.com article on std::ios::exceptions
失败时,会设置failbit标志(可以使用成员失败检查),并且根据异常设置的值,可能会抛出异常。