c ++抛出错误

时间:2011-05-01 08:49:04

标签: c++ error-handling throw

我正在编写一个c ++代码,它将o节点添加到列表的末尾我想在节点已经存在时抛出错误,它正在工作但是每当我用已经退出的节点调用它时我都会收到此错误。任何人都知道原因以及如何修复?

  

异常终止后调用   抛出'错误'的实例
  中止

List& List::addnode(node p){
    node *Current=NULL;

    p.nextNode = NULL;
    p.previousNode = NULL;

    if (!firstNode) firstNode = &p;

    else Current = firstNode;
    while (Current){
            if ((*Current) == p){
                    throw NodeExist;
                    return *this;
            }
            if (!(Current->nextNode)){
                    Current->nextNode = &p;
                    p.previousNode = Current;
                    return *this;
            }
            Current = Current->nextNode;

    }

}

编辑:我称之为

try{
x.addNode(p);
x.addNode(p1);
x.addNode(p2);
x.addNode(p1);
x.addNode(p4);
}
catch(int i){
cout<<i<<endl;
}

如果我删除x.addNode(p1);行中的一行,它会正常工作而没有例外...

2 个答案:

答案 0 :(得分:3)

你不会在任何地方抓住并处理NodeExist。所以它一直上升到主要的呼叫链。

catch(int i)NodeExist无法匹配,需要catch(Error e)

答案 1 :(得分:0)

你还有什么期待?

throw异常,您的应用程序正在终止,但异常。它正在做你告诉它要做的事情。

更具体地说,你不是catch程序中调用链上方的异常,因此例外是终止程序。