たまに見かけるソース①
たまにtry~catchの例外処理で下のようなコードを見かける。
多分このメソッドより上(呼び出し元)の方で例外を処理してね。
という意味合いで使っているのだが(私もそうでした)、実はこうすると 例外が発生した場所StackTraceの情報が消えてしまう。 (Message情報は残ってます) throw exを行うとどうなるか?と対応策が下のコードになります。 テストコード
Test01を実行するとこんな感じになります。
BizSampleクラスのBizTest()で例外発生 場所 HP.Form14.Test01() 場所 HP.Form14.button1_Click(Object sender, EventArgs e) Test02を実行すると BizSampleクラスのBizTest()で例外発生 場所 HP.BizSample.BizTest() 場所 HP.Form14.Test02() 場所 HP.Form14.button1_Click(Object sender, EventArgs e) どこで例外が発生したのか分かるようにするべきなのでthrow ex;でなく throw;の方がよいです。 参考: http://msdn.microsoft.com/ja-jp/library/ms182363(v=vs.80).aspx |
|