Почему исключение .net не перехватывается?

Рассмотрим следующую «безопасную» программу:

internal class Safe
{
    public static void SafeMethodWillNeverThrow()
    {
        try
        {
            var something = ThrowsNewException();
            Func<int, string> x = p => something.ToString();
        }
        catch (Exception)
        {
        }
    }

    private static object ThrowsNewException() 
    {
        throw new Exception();
    }

    public static void Main()
    {
        SafeMethodWillNeverThrow();
    }
}

Она никогда не должна завершаться с исключением. Но почему он терпит неудачу, когда я запускаю его? Почему SafeMethodWillNeverThrow() выдает исключение?

Перед тестированием этого кода прочтите ответ ниже.

10
задан akjoshi 12 June 2012 в 06:20
поделиться