异常后继续循环?

时间:2016-05-21 19:48:24

标签: c#

我是一个上传某些项目的foreach,现在发生在某些情况下这个项目是重复的,所以我收到了消息

  

约束失败

'因为我有重复的密钥,我需要继续foreach的问题,但当然例外,导致退出循环。一个练习的例子:

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

情况:

  1. 运行循环(列表计数= 20)
  2. 添加第1项,收到错误'因为已添加
  3. 落入例外
  4. 如果存在约束异常,我怎样才能再次使用foreach?

3 个答案:

答案 0 :(得分:3)

如果已添加密钥,请不要将异常用作指示符 - 这非常慢!...以编程方式检查它(例如:Dictionary.ContainsKey(key))。

答案 1 :(得分:2)

您应该更改代码并将try-catch放在for循环中:

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

但是通过异常捕获检查重复项并不是一个好主意。

答案 2 :(得分:0)

您可以捕获异常并在此块处理操作中删除重复键, 然后转到终于块。