Страницы

Поиск по вопросам

суббота, 1 февраля 2020 г.

c# try catch Вложенные

#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

Комментариев нет:

Отправить комментарий