Menu
CoddyTech

Блок 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

Тип в скобках catch определяет, какие ошибки обрабатывает этот блок. Два распространённых типа — ArithmeticException, возникающий при целочисленном делении на ноль, и NumberFormatException, возникающий из-за Integer.parseInt(), когда текст не является числом. Один блок catch может обрабатывать несколько типов одновременно:

try {
   int value = Integer.parseInt(text);
   int result = 10 / value;
} catch (ArithmeticException | NumberFormatException e) {
   // обрабатывает оба
} finally {
   // всегда выполняется
}

Использование вместо этого Exception является более общим: такой блок обрабатывает оба этих исключения и любое другое исключение.

challenge icon

Задание

Легко

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

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

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

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

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

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Проверьте себя

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

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

Потренируйтесь самостоятельно: Онлайн-компилятор Java