#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
Комментариев нет:
Отправить комментарий