1

发生异常后如何继续循环?

    foreach (var oItem in List<Client>)
        switch (oItem.Name)
        {
         case "one":
         {
            break;
         }


         case "two":
         case "three":
         {
            break;
         }


        }

}

当在块情况下抛出异常时,我想继续阻止两个或另一个块取决于循环的值。

那可能吗 ?

因为每个案例都是通过FTP从每个客户端下载数据的,所以当客户端的数据抛出异常时,并不意味着客户端的其余数据也不好。在循环结束时,我将输出客户端的哪些数据已下载,哪些数据不正确。

提前谢谢你,史蒂夫

4

4 回答 4

3

将引发异常的代码放在 try/catch 块中。

case "one":
{
    try
    {
        //Code that may break
    }
    catch (Exception ex)
    {
        //Deal with the exception
    }
    break;
 }

但是,您确实应该找出它抛出异常的原因,并确保在您处于会导致异常发生的情况下不执行代码。

于 2012-10-09T11:12:01.587 回答
2

为此,您需要通过您的代码中的异常,例如

注意:如果可能在单独的文件中记录异常,以便您可以获取有关您遇到异常的项目的信息

 foreach (var oItem in List<Client>)
{
   try
    {
            switch (oItem.Name)
            {
             case "one":
             {

             }
             break;

             case "two":
             case "three":
             {

             }
             break;

            }
   }
   catch(Exception ex){ // log exception }
}
于 2012-10-09T11:10:55.677 回答
0
foreach (var oItem in List<Client>)
{
   ret_val=call_switch(oItem.Name);
}
------------
private string call_switch(string val_str)
{
   string ret_val="";
    try
    {
           switch (oItem.Name)
            {
             case "one":
             {
               ret_val="valuee.. ";
             }
             break;

             case "two":
             case "three":
             {

             }
             break;

            }

   }
   catch(Exception ex){ //... }
   return ret_val;
}
于 2012-10-09T11:18:24.883 回答
0

如果您在循环内捕获异常,则循环将继续

于 2012-10-09T11:11:51.743 回答