2012-07-20 149 views

回答

10

这是函数try块。在派生类的构造函数中只有在c-tors中捕获错误才有用。您可以在标准例如n3337草案参数文件中阅读有关此功能的更多信息。 15,15.1。

4所述的功能试块相关联的处理程序-SEQ与 构造函数初始值设定,如果存在的话,和化合物语句。在执行复合语句期间或在构造函数和析构函数执行期间抛出的异常 分别在类的子对象的初始化或销毁 的过程中将 控制转移到函数尝试块中的处理函数在执行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 
} 

末端示例]

+1

请参阅http://www.drdobbs.com/introduction-to-function-try-blocks/184401297以获得更深入的解释和理由。 – pmr 2012-07-20 09:14:23

+0

哇..从来没有见过之前...谢谢你的回复 – PermanentGuest 2012-07-20 09:28:46

+0

@PermanentGuest这个功能很少使用,因为在你的catch块异常结束时会重新抛出异常,如果你不抛出其他异常。函数尝试块不能接受异常。 – ForEveR 2012-07-20 09:32:47