Ho scritto un semplice programma per testare una teoria secondo cui il blocco "finally" verrà sempre eseguito indipendentemente da cosa. Ma quello che vedo dal basso pgm è che il controllo non sembra mai entrare nel blocco finale esterno.Perché l'esterno "finalmente" non viene eseguito quando vengono lanciati tiri interni?
Ho provato a fare F5 e anche Ctrl-F5 in Visual Studio ed è lo stesso risultato.
Qualcuno può spiegare perché sto vedendo questo comportamento?
uscita sulla finestra della console è:
cattura interna
interiore finalmente
cattura esterno
exeption non gestita:
..e poi l'applicazione si blocca
public class Program
{
static void Main()
{
try
{
try
{
string s = null;
s.ToString();
}
catch
{
Console.WriteLine("inner catch");
throw;
}
finally
{
Console.WriteLine("inner finally");
}
return;
}
catch
{
Console.WriteLine("outer catch");
throw;
}
finally
{
Console.WriteLine("outer finally");
}
}
}
oh ok. Cliccando su cancella appare la scritta "esterno alla fine": buono a sapersi questo grazie – user330612