繁体   English   中英

c++ 投掷错误

[英]c++ throwing error

我正在编写一个 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); 线它正常工作,无一例外......

您不会在任何地方捕获和处理NodeExist 所以它会沿着调用链一直向上到 main。

catch(int i)NodeExist不匹配,无法捕获您需要的catch(Error e)

你还期待什么?

throw异常,并且您的应用程序因异常而终止。 它正在做你告诉它做的事情。

更具体地说,您没有在程序中调用链更高的任何地方catch异常,因此异常正在终止程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM