#c_sharp
Как происходит обработка блока finally, если идет конструкция
try {
try { }
catch {}
finally {}
}
catch {}
finally {}
Сработает тот и тот блок или же?
Ответы
Ответ 1
Должны отработать оба finally, т.к. блок finally Отрабатывает всегда (см. документацию), если исключение поймано. Если не поймано, то здесь уже нет гарантий выполнения.Ответ 2
static void Main(string[] args) { try{ try{ throw new Exception(); } catch{ Console.WriteLine("Inner catch"); } finally{ Console.WriteLine("Inner finally"); } } catch{ Console.WriteLine("Outer catch"); } finally{ Console.WriteLine("Outer finally"); } } Результат: Inner catch Inner finally Outer finally
Комментариев нет:
Отправить комментарий