本例是在Vs2008 3.5的框架上面测试的结果
C#
void Foo()
{
try
{
try
{
throw new Exception();//(1)
}
catch {
Console.WriteLine("1 catch"); throw; //(2)
}
finally {
Console.WriteLine("1 finally"); //(3)
}
}
catch (ArgumentException ae) //(4)
{
Console.WriteLine("2 catch"); throw;
}
finally //(5)
{
Console.WriteLine("2 finally");
}
}
执行路径(1)->(2)就结束无法通过throw
在Vb中
Sub Foo()
Try
Try
Throw New Exception '(1)
Catch ex As Exception '(2)
Console.WriteLine("1 catch")
Throw
Finally '(2)
Console.WriteLine("1 finally")
End Try
Catch ex As Exception '(4)
Console.WriteLine("2 catch")
Throw
Finally '(5)
Console.WriteLine("2 finally")
End Try
End Sub
执行路径(1)->(2)->(3)->(4)就结束无法通过throw