1

例外が発生した後にループを続行するにはどうすればよいですか?

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


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


        }

}

ブロックケースで1つが例外をスローした場合、ブロックを続行したい 2つまたは別のブロックは、ループの値に依存します。

それは可能ですか?

その都度各クライアントから FTP 経由でデータを再ダウンロードするため、クライアント 1 のデータが例外をスローした場合、クライアントの残りのデータも悪いというわけではありません。ループの最後に、クライアントのどのデータがダウンロードされ、どのデータが悪いかを出力します

前もってありがとう、スティーブ

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

このためには、次のようなyoutコードで例外をバイパスする必要があります

:可能であれば、別のファイルに例外を記録して、例外が発生しているアイテムの情報を取得できるようにします

 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 に答える