我刚才看到SO问题中的特殊语法.
class B{
A a;
public:
B() try : a() {} catch(string& s) { cout << &s << " " << s << endl; };
};
Run Code Online (Sandbox Code Playgroud)
这个函数外面的try-catch-block是什么意思?
For*_*veR 10
这是功能尝试块.仅在c-tors中用于派生类构造函数中的catch错误.您可以在标准中阅读有关此功能的更多信息,例如n3337草案.15,15.1.
4 function-try-block将handler-seq与ctor-initializer(如果存在)和compound-statement相关联.在执行复合语句期间抛出的异常,或者对于构造函数和析构函数,在类的子对象的初始化或销毁期间,将控制转移到函数try块中的处理程序,方式与异常相同在try-block执行期间抛出控制权将控制转移给其他处理程序.[例如:
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
}
Run Code Online (Sandbox Code Playgroud)
- 末端的例子]
| 归档时间: |
|
| 查看次数: |
379 次 |
| 最近记录: |