Что выведет код Middle Исключения спрашивают часто обновлено
Порядок try, catch и finally
Вопрос
Что выведет программа (.NET 8)? По строке на каждый вывод.
try
{
Run();
}
catch (Exception e)
{
Console.WriteLine("outer catch: " + e.Message);
}
static void Run()
{
try
{
Console.WriteLine("try");
throw new InvalidOperationException("boom");
}
catch (ArgumentException)
{
Console.WriteLine("arg catch");
}
finally
{
Console.WriteLine("finally");
}
Console.WriteLine("after");
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: try, finally, outer catch: boom. Внутренний catch ловит только ArgumentException, а брошено InvalidOperationException, поэтому он пропускается. finally выполняется при выходе из блока, затем исключение уходит к вызывающему: outer catch: boom.
Что выведет
try
finally
outer catch: boom
Разбор
Внутренний catch ловит только ArgumentException, а брошено InvalidOperationException, поэтому он пропускается. finally выполняется при выходе из блока, затем исключение уходит к вызывающему: outer catch: boom. Строка after не печатается.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.