ошибка с ++ - PullRequest
       55

ошибка с ++

0 голосов
/ 01 мая 2011

Я пишу код на 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 ]

3 голосов
/ 01 мая 2011

вы нигде не ловите и не обрабатываете NodeExist. таким образом, он идет вверх по цепочке вызовов вплоть до главного.

catch(int i) не соответствует NodeExist, чтобы поймать то, что вам нужно catch(Error e)

0 голосов
/ 01 мая 2011

Что еще вы ожидали?

Вы throw исключение, и ваша заявка закрывается с исключением. Он делает то, что вы сказали, чтобы сделать.

Чтобы быть более точным, вы не catch исключение где-либо выше цепочки вызовов в вашей программе, поэтому исключение завершает программу.

...