ebool keep_trying= true;
do {
char fname[80]; // std::string is better
cout Image "Please enter the file name: ";
cin Image fname;
try {
A= read_matrix_file(fname);
...
keep_trying= false;
} catch (cannot_open_file& e) {
cout Image "Could not open the file. Try another one!\n";
} catch (...)
cout Image "Something is fishy here. Try another file!\n";
}
} while (keep_trying);
此代码来自Discovering modern c++。我不明白try-block代表什么“A”和下一个catch-block中的“e”(cannot_open_file& e)
答案 0 :(得分:0)
这似乎是一个不完整的代码段。你可以假设' A'是read_matrix_file()返回的任何类型。并且' e'是对invalid_open_file类型的引用,应该在代码中的其他地方定义。
答案 1 :(得分:0)
int read_matrix_file(const char* fname, ...)
{
fstream f(fname);
if (!f.is_open())
return 1;
...
return 0;
}
" A"是int read_matrix_file()
函数的返回值。
struct cannot_open_file {};
void read_matrix_file(const char* fname, ...)
{
fstream f(fname);
if(!f.is_open())
throw cannot_open_file{};
...
}
' E'是我们试图捕获的异常(由void read_matrix_file()
函数抛出)。基本代码实际上。
感谢您的帮助StackOverflow!
所有代码均来自" 发现现代C ++ "。请参阅问题链接。