2016-05-21 7 views
-2

У меня есть Еогеасп, что загрузить некоторые элементы, в настоящее время происходит в некоторых ситуациях, что это элементы дубликат, так что я получаю сообщениеПродолжить цикл после исключения?

ограничения Failed

потому что я дублируется ключ , проблема в том, что мне нужно продолжить foreach, но исключение, конечно, вызывают выход из цикла. Пример из практики:

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

Ситуация:

  1. Запуск цикла (количество списка = 20)
  2. Добавление пункта 1, получил ошибку, потому уже добавили
  3. падение исключением

Как я могу вернуться в foreach только в случае исключения ограничения?

+0

Обработчик исключений (try/catch) должен находиться внутри цикла foreach, чтобы продолжить. – jdweng

+0

@jdweng uhm, но если мне нужно поймать другое исключение извне? – D3bug

+0

Имеются два дескриптора исключений. Нет причин, по которым вы не можете иметь вложенные исключения. – jdweng

ответ

3

Не используйте исключение в качестве индикатора, если ключ уже добавлен - это очень медленно! ... Проверяйте его программно (например: Dictionary.ContainsKey(key)).

+0

Я использую Sqlite – D3bug

0

Вы можете поймать исключение и в этом процессе действий блока удалить дубликат ключа, затем перейти к наконец блок.

2

Вы должны изменить свой код и поместить try-catch внутри for цикла:

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

Но это не хорошая идея, чтобы проверить дубликаты исключениями отлова.

Смежные вопросы