У меня есть простой блок try-catch-finally в С#. Как я понимаю, блок "finally" полезен, потому что его код будет выполняться, даже если исключение выбрано внутри блока catch (запрет некоторых специальных типов исключений).
Однако в простом примере ниже блок finally никогда не выполняется. Visual Studio говорит, что в моем блоке catch происходит необработанное исключение, а затем программа завершается. Я думал, что выполнение просто перейдет к блоку finally.
Как я могу гарантировать, что код в блоке finally выполняется даже тогда, когда в блоке catch происходит исключение?
public static void Main(string[] args)
{
try
{
throw new Exception("Apple");
}
catch (Exception ex)
{
throw new Exception("Banana");
}
finally
{
// This line never executes. Why?
Console.WriteLine("Carrot");
}
}