2011-05-01 12 views
0

を投げます。誰もが理由を知っており、それがどのように修正されていますか?C++私は、ノードが、それが動作しているが、私はすでにノードを出て、それを呼び出すたび、私はこのエラーを取得し、すでに存在しているときにエラーをスローするリストの末尾にOノードを追加し、C++のコードを書いていますエラー

例外が編集
中止

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; 

    } 

} 

'エラー' のインスタンスを投げ 後に呼び出さTERMINATE:私はのいずれかを消去した場合、私はその

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);それは例外なく正常に動作します...

+0

もここに値によって渡されるノードですので、あなたはコピーを得ていますか? – ColWhi

+0

'Error'と' NodeExist'の定義を表示できますか? –

答えて

3

あなたがキャッチし、どこでもNodeExistを処理しません。コールチェーン全体をメインにしていきます。

catch(int i)あなたが期待していた他に何catch(Error e)

+0

私はそれをどのように呼び出すかを追加します。欠けていますか? – ibrahim

+0

私は問題を理解する、それは私が間違ったタイプでそれをキャッチすることです... – ibrahim

0

必要があることをキャッチするためにNodeExistと一致していませんか?

あなたthrow例外、およびアプリケーションが例外で終了しています。あなたが言ったことをやっている。

具体的には、プログラム内のコールチェーンの上位のどこかで例外を発生させるわけではありません。例外はプログラムを終了させることです。

関連する問題

 関連する問題