0

私には3つのメソッドがあり、すべてのメソッドに対してキャッチを試みています。3 番目の方法でエラーが発生した場合は例外になります。

private void M1()
{  
   try
   {
     //some code
     //calling M2()
     //some code
   }
   catch(Exception ex)
   {
      MessageBox.Show(ex.Message);
   }
}
private void M2()
{  
   try
   {
     //some code
     //calling M3()
     //some code
   }
   catch(Exception ex)
   {
      throw ex;
   }
}
private void M3()
{  
   try
   {
     //some code
     //Error Occur
     //some code
   }
   catch(Exception ex)
   {
      throw ex;
   }
}

これで、M1() メソッドに直接移動し、例外が表示されます。そしてもう一つの方法は、

private void M1()
{  
   try
   {
     //some code
     //calling M2()
     //some code
   }
   catch(Exception ex)
   {
      MessageBox.Show(ex.Message);
   }
}
private void M2()
{  
   try
   {
     //some code
     //calling M3()
     //some code
   }
   catch(Exception ex)
   {
      MessageBox.Show(ex.Message);
      return;
   }
}
private void M3()
{  
   try
   {
     //some code
     //Error Occur
     //some code
   }
   catch(Exception ex)
   {
      MessageBox.Show(ex.Message);
      return;
   }
}

例外の後、M2() と M1() のコードも実行します。

どのプログラムが最適か...

4

1 に答える 1

2

良いデザインも悪いデザインもありません。あなたのシナリオだけが最良のアプローチを決定しました。

M1のエラーをキャッチしたい場合はTry .. catch、M2とM3に書き込まないでください。

エラーが発生した関数でエラーを処理したい場合はTry .. catch、同じ関数に入れてください。

于 2013-03-07T12:11:19.000 に答える