Dlaczego wyjątek .net nie został złapany?
Rozważ następujący program „Bezpieczny”:
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();
}
}
Nigdy nie powinno się kończyć z wyjątkiem. Ale dlaczego to się nie powiedzie, gdy go uruchomię? Dlaczego SafeMethodWillNeverThrow () rzuca wyjątek?
Przed przetestowaniem tego kodu przeczytaj odpowiedź poniżej.