Menu
Coddy logo textTech

Блок finally

Часть раздела Логика и управление потоком путешествия по Java на Coddy — урок 41 из 59.

Блок finally содержит код, который будет выполнен после блоков try-catch независимо от того, произошло исключение или нет. Он обычно используется для операций очистки, таких как закрытие файлов или соединений с базой данных.

Вот базовая структура блока try-catch-finally:

try {
   // Код, который может выбросить исключение
} catch (ExceptionType e) {
   // Код для обработки исключения
} finally {
   // Код, который всегда выполняется
}

Давайте посмотрим на пример со счетчиком:

int counter = 0;
try {
   int result = 10 / 0;
   // Это вызовет исключение
   counter = 1;
} catch (ArithmeticException e) {
   counter = 2;
} finally {
   counter = 3;
   // Это всегда выполнится
}

После выполнения приведенного выше кода, counter содержит:

3

challenge icon

Задание

Легко

Создайте метод с именем processNumber, который принимает два аргумента:

  1. Строку (number) для преобразования в целое число
  2. Логическое значение (shouldThrow), определяющее, должно ли быть выброшено исключение

Метод должен:

  1. Инициализировать переменную result значением 0
  2. В блоке try:
    • Если shouldThrow истинно, разделить 10 на 0
    • В противном случае преобразовать строковое число в целое и сохранить в result
  3. В блоке catch: установить result в -1
  4. В блоке finally: прибавить 100 к result
  5. Вернуть result как строку

Шпаргалка

Блок finally выполняется после блоков try-catch независимо от того, произошло ли исключение. Он используется для операций очистки.

Базовая структура:

try {
   // Код, который может выбросить исключение
} catch (ExceptionType e) {
   // Код для обработки исключения
} finally {
   // Код, который всегда выполняется
}

Пример со счетчиком:

int counter = 0;
try {
   int result = 10 / 0; // выбрасывает исключение
   counter = 1;
} catch (ArithmeticException e) {
   counter = 2;
} finally {
   counter = 3; // всегда выполняется
}
// counter = 3

Попробуйте сами

import java.util.Scanner;

public class Main {
    public static String processNumber(String number, boolean shouldThrow) {
        // Напишите свой код здесь
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String number = scanner.nextLine();
        boolean shouldThrow = Boolean.parseBoolean(scanner.nextLine());
        
        System.out.println(processNumber(number, shouldThrow));
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком