2009.09.22 Tuesday
Try-Catch のネストに関するメモ
こんなネストを書くのは如何かと思いながらも、こんなコード。
[VB.NET]
で、コレの結果は
Exceptionは握り潰されました。
じゃぁこれは?
結果は…
こっちはExceptionが伝播しました。
どっちが欲しいのかは状況によって代わるので、きちんと理解しておかないと後で辛いと。
[VB.NET]
Sub Main()
Try
Try
Throw New ApplicationException("test")
Catch ex As Exception
Console.WriteLine("Caught: Level 2")
Console.WriteLine(ex.Message)
End Try
Console.WriteLine("End of normal line of Level 1")
Catch ex As Exception
Console.WriteLine("Caught: Level 1")
Console.WriteLine(ex.Message)
End Try
Console.WriteLine("Hit any key...")
Console.ReadKey()
End Sub
で、コレの結果は
Caught: Level 2
test
End of normal line of Level 1
Hit any key...
Exceptionは握り潰されました。
じゃぁこれは?
Sub Main()
Try
Try
Throw New ApplicationException("test")
Catch ex As Exception
Console.WriteLine("Caught: Level 2")
Console.WriteLine(ex.Message)
Throw '<-これを追加
End Try
Console.WriteLine("End of normal line of Level 1")
Catch ex As Exception
Console.WriteLine("Caught: Level 1")
Console.WriteLine(ex.Message)
End Try
Console.WriteLine("Hit any key...")
Console.ReadKey()
End Sub
結果は…
Caught: Level 2
test
Caught: Level 1
test
Hit any key...
こっちはExceptionが伝播しました。
どっちが欲しいのかは状況によって代わるので、きちんと理解しておかないと後で辛いと。






















