Блок 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
Задание
ЛегкоСоздайте метод с именем processNumber, который принимает два аргумента:
- Строку (
number) для преобразования в целое число - Логическое значение (
shouldThrow), определяющее, должно ли быть выброшено исключение
Метод должен:
- Инициализировать переменную result значением 0
- В блоке try:
- Если shouldThrow истинно, разделить 10 на 0
- В противном случае преобразовать строковое число в целое и сохранить в result
- В блоке catch: установить result в -1
- В блоке finally: прибавить 100 к result
- Вернуть 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));
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиПовторение - 2D-массивыСложение и вычитание матрицРваные массивы3D-массивы и вышеРаспространённые паттерны 2D-массивовПовторение - всё о массивах2HashMap Часть 1
Что такое HashMap?Объявление HashMapДоступ к значениямПроверка существования ключаИзменение словарейИтоги - HashMap3HashMap. Часть 2
Методы HashMapИтерация с keySet()Итерация с entrySet()Вложенный HashMapПовторение - Управление складомПовторение - Операции HashMap6Продвинутое управление потоком
Операторы метокВыражение switchСопоставление шаблоновОхранные клаузыИтоги - управление потоком9Проект - Счетчик уникальных слов
Ввод и хранение текстаОбработка слов