我写了下面的测试代码,即使我很确定会发生什么:在finally块中抛出异常之后返回值会发生什么?
static void Main(string[] args)
{
Console.WriteLine(Test().ToString());
Console.ReadKey(false);
}
static bool Test()
{
try
{
try
{
return true;
}
finally
{
throw new Exception();
}
}
catch (Exception)
{
return false;
}
}
果然,程序写的“假”到控制台。我的问题是,最初返回的真实情况会怎样?有没有办法获得这个值,如果可能的话,在catch块中,或者如果不是最初的finally块呢?
只是为了澄清,这仅用于教育目的。我绝对不会在实际的程序中制造这样一个令人费解的异常系统。
几乎是一个重复:[是否合法,可以在finally块中访问返回值?](http://stackoverflow.com/q/304847/256431) – 2012-03-09 00:27:15