Я написал следующий тестовый код, хотя был почти уверен, что произойдет:
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, если нет?
Просто поясню, это только в образовательных целях. Я бы никогда не сделал такую запутанную систему исключений в реальной программе.