这个语法是咋回事:int main()try{}catch(){}

这个语法是怎么回事:int main()try{}catch(){}
本帖最后由 shendaowu 于 2013-08-10 12:35:11 编辑
http://www.stroustrup.com/Programming/std_lib_facilities.h
#include "../../_h_file_/std_lib_facilities.h"

int main()
try{
error( "asdf" );
return 0;
}
catch(runtime_error& e){
cerr << "runtime error: " << e.what() <<endl;
keep_window_open();
return 1;
}

《C++程序设计原理与实践》上的,第一次见,这个要怎么理解?
这是一种特殊的语法么?在标准文档的哪个地方?我刚才大概看了一下标准文档中的异常部分,没看到。将try理解成一条语句好像不行,这个是不能通过编译的:
void f()cout << "test";

------解决方案--------------------
这语法的目的是为了构造函数可以这么写:

class A
{
  A() try: x(5) {} catch(std::bad_alloc& e) {}
  vector<int> x;
};

能catch到初始化列表的时候的exception。
------解决方案--------------------
引用:
不要太相信书本了,即使能编译过也不符合规范。至少我见过的程序没那样写过。
按照规范写代码就是了。

可惜。这是标准15.3里描述的function-try-block。你没见过只是你没见过。规范是100%符合的。