Если в блоке обработчика перехвата есть необработанное исключение, блок finally вызывается ровно ноль раз
static void Main(string[] args)
{
try
{
Console.WriteLine("in the try");
int d = 0;
int k = 0 / d;
}
catch (Exception e)
{
Console.WriteLine("in the catch");
throw;
}
finally
{
Console.WriteLine("In the finally");
}
}
Выход:
C: \ Users \ Администратор \ документы \ TestExceptionNesting \ Bin \ Release> TestExceptionNesting.exe
в попытке
в улове
Необработанное исключение: System.DivideByZeroException: попытка деления
на ноль. в TestExceptionNesting.Program.Main (String [] args) в
C: \ users \ administrator \ documents \ TestExceptionNesting \ TestExceptionNesting.cs: строка 22 * 1015 *
C: \ Users \ Администратор \ документы \ TestExceptionNesting \ Bin \ Release>
Мне задали этот вопрос сегодня на собеседовании, и интервьюер продолжал возвращаться: "Вы уверены, что, наконец, не позвонили?" Я был неуверен, если это был вопрос с подвохом, или интервьюер имел в виду что-то еще и написал неправильный код для отладки, поэтому я пришел домой и попробовал (сборка и запуск, без взаимодействия с отладчиком), просто чтобы подумать отдых.