Что происходит с возвращаемым значением после создания исключения в блоке 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;
    }
}

Действительно, программа вывела на консоль "False". Мой вопрос в том, что происходит с истинным, которое изначально возвращено? Есть ли способ получить это значение в блоке catch, если возможно, или в исходном блоке finally, если нет?

Просто поясню, это только в образовательных целях. Я бы никогда не сделал такую ​​запутанную систему исключений в реальной программе.

9
задан aboveyou00 6 March 2012 в 13:20
поделиться