Задать вопрос

В чём смысл finally?

В java и c# есть конструкция try-catch-finally. Зачем нужен finally, если
try {
    Integer.parseInt("test");
    System.out.println("try");
}
catch (Exception ex) {
    System.out.println("catch");
}
finally {
    System.out.println("finally");
}

и

try {
    Integer.parseInt("test");
    System.out.println("try");
}
catch (Exception ex) {
    System.out.println("catch");
}
System.out.println("finally");

выводят одно и то же?
  • Вопрос задан
  • 1927 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 1
E1ON
@E1ON
Vocaloid lover
Finally гарантирует выполнение кода, независимо от того, была ошибка или нет.
А что будет, если код, обрабатывающий исключение, сам вбросит исключение?

try
{
  throw new ArgumentException();
}
catch(Exception)
{
      // any new exception thrown here
} 
CodeCleanup();


В данном случае выполнение логики прервется, соответственно, метод CodeCleanup не будет выполнен.

Подобное может случиться, например при вызовах методов, которые выполняют определенные сетевые операции, которые отваливаются по Timeout-у. В таком случае обычно делают N-ое кол-во повторных вызовов того же метода, чтобы исключить проблемы, связанные с настабильностью сети.

Finally решает эту проблему.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы