C++ 这个语法是什么意思?

C++ 这个语法是什么意思?,c++,syntax,C++,Syntax,我不久前就见过这种奇特的语法 class B{ A a; public: B() try : a() {} catch(string& s) { cout << &s << " " << s << endl; }; }; B类{ A A; 公众: (){({)} catch(string & s){cOUT它的函数尝试块。在派生类构造函数中的catch错误中只使用C-Tror。您可以在标准如N337

我不久前就见过这种奇特的语法

class B{
    A a;
    public:
        B() try : a() {} catch(string& s) { cout << &s << " " << s << endl; };
};
B类{
A A;
公众:

(){({)} catch(string & s){cOUT它的函数尝试块。在派生类构造函数中的catch错误中只使用C-Tror。您可以在标准如N337草案15、15.1中阅读更多关于此特性的内容。

4函数try块将处理程序seq与 ctor初始值设定项(如果存在)和复合语句。异常 在执行复合语句期间引发,或 构造函数和析构函数,在初始化或 分别销毁类的子对象和 控件以与函数try块相同的方式访问函数try块中的处理程序 执行try块传输控件期间引发异常 到其他处理程序。[示例:

-[结束示例]


它捕获在创建成员对象时从构造函数抛出的异常。您提到的问题的一个答案包含一个解释详细信息的链接:。

有关更深入的解释和基本原理,请参阅。@PermanentGuest此功能很少使用,因为在catch块结束时,如果您不通过w其他一些异常。函数try块无法处理异常。
int f(int);
class C {
int i;
double d;
public:
C(int, double);
};
C::C(int ii, double id)
try : i(f(ii)), d(id) {
// constructor statements
}
catch (...) {
// handles exceptions thrown from the ctor-initializer
// and from the constructor statements
}