2014-03-27 158 views
1

我试图创建例外对象创建的对象,如果这是全成我想要的是对象添加到载体。这里是我的代码:C++处理异常

try{ 

    CCoord newCoord(input); //I'm parsing the input into several prvt variables 

} 
catch(...){ 
    //it failed, just quit 
} 

//if no error occured, add it to the vector 
vCoords.push_back(newCoord); 

但我不能够访问该对象之外try块。任何解决方案,请?

回答

2

之外它的范围无法访问的对象。要做的仅仅是移动try块内的push_back最好的事情(否则你就必须要么默认构造它的块的上方或使指针和动态分配的块内)。

这里有更好的方式来做到这一点:

try{ 

    CCoord newCoord(input); //I'm parsing the input into several prvt variables 


    //if no error occured, add it to the vector 
    vCoords.push_back(newCoord); 
} 
catch(...){ 
    //it failed, just quit 
} 

注的注释:“如果没有发生错误,将其添加到矢量”仍然是真实的 - 如果CCoord构造函数抛出异常,它会跳通过push_back到catch块。

+0

如何简单,非常感谢。 – marthin23

2

对象不存在存在以外的try块。你必须在块内添加它。

一个try块就像任何其他的块,它增加了一个新的范畴,一切范围内声明的是局部的范围。如果在该块中不是本地的,那么如果异常被抛出并被捕获,但异常处理程序没有退出,那么该对象可能只是部分构建的(如果有的话)使用它的try-catch后会被不确定的行为。