【发布时间】:2012-08-01 19:57:23
【问题描述】:
我正在阅读一本关于 C++ 的书,在关于错误的章节中,它有这个程序(我遗漏了一些小事情,但主要是这个):
int main()
try {
// our program (<- this comment is literally from the book)
return 0;
}
catch(exception& e) {
cerr << "error: " << e.what() << '\n';
return 1;
}
catch(...) {
cerr << "Unknown exception\n";
return 2;
}
这是编译的,但当然它什么也没做,所以我仍然想知道
- 为什么没有一组花括号括住 main() 之后的所有内容?这些块或者我应该称它们为“流行语”(哈!)是否是 main() 的一部分?
- 如果它们是函数,为什么在 catch(whatever) 之前没有“int”?
- 如果它们不是函数,它们是什么?
- re catch(...),我从未见过这样使用省略号。我可以在任何地方使用省略号来表示“任何东西”吗?
【问题讨论】:
-
catch (...)是的,是的。至于它们一般情况下,请研究 C++ 中的异常处理(其他语言也有非常相似的语法)。 -
并在此处查找有关使用
main的函数 try 块的问题:stackoverflow.com/questions/8405390/… -
哦,对了,函数尝试块。我记得从那些 C++ 的疯狂角落 问题之一。
标签: c++ syntax error-handling