Napisałem następujący kod testowy, choć był pewien, co by się stało:Co dzieje się z zwracaną wartością po wyjściu wyjątku w bloku 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;
}
}
Rzeczywiście, program napisał „false” do konsoli. Moje pytanie brzmi: co dzieje się z prawdą, która została pierwotnie zwrócona? Czy istnieje sposób, aby uzyskać tę wartość, w bloku catch, jeśli to możliwe, lub w oryginale w końcu bloku, jeśli nie?
Aby wyjaśnić, służy to wyłącznie celom edukacyjnym. Nigdy nie zrobiłbym takiego zawiłego systemu wyjątków w rzeczywistym programie.
Prawie duplikat: [Czy jest legalne i możliwe uzyskanie dostępu do wartości zwracanej w bloku finally?] (Http://stackoverflow.com/q/304847/256431) –