2016-05-21 4 views
-2

私は今、このアイテムが重複しているので、私は私が鍵を複製しました原因例外の後でループを続行しますか?

制約は」

を失敗したメッセージを取得することを、いくつかの状況で発生し、いくつかのアイテムをアップロードするforeachをしました、問題は私がforeachを続ける必要があることですが、例外を除いてループの終了を引き起こします。実践例:

try 
{ 
    foreach(item in list) 
    { 
    //code that add item to table 
    } 
}catch(Exception ex) 
{ 
    Console.WriteLine(ex.Message); 
} 

状況:エラー「原因はすでに 例外で

  • 秋を追加してしまった、項目1を追加する(リスト数= 20)
  • ループを実行

    1. 制約の例外がある場合にのみ、foreachで再び行うことはできますか?

  • +0

    例外ハンドラ(try/catch)は、foreachループ内にいなければ続行できません。 – jdweng

    +0

    @jdweng uhmしかし、私は外部的に他の例外をキャッチする必要がある場合? – D3bug

    +0

    2つの例外ハンドルがあります。ネストされた例外を持つことはできません。 – jdweng

    答えて

    3

    キーが既に追加されている場合は、例外をインジケータとして使用しないでください - これは非常に遅いです...代わりにプログラマチックにチェックしてください(例:Dictionary.ContainsKey(key))。

    +0

    私はSqliteを使用しています – D3bug

    0

    例外をキャッチして、このブロックで重複キーを削除するアクションを実行すると、、最後にブロックに移動します。

    2

    あなたはあなたのコードを変更し、forループ内try-catchを置く必要があります。

    foreach(item in list) 
    { 
        try 
        { 
         //code that add item to table 
        } 
        catch(Exception ex) 
        { 
         Console.WriteLine(ex.Message); 
        } 
    } 
    

    をしかし、キャッチ例外で重複をチェックすることをお勧めではありません。

    関連する問題