Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvPmExFn 358 of 420 menu
◀ ▶

Метод с исключением в Java

Правила для параметров часто удобно держать внутри метода. Если значение не подходит, метод выбрасывает исключение, а вызывающий код решает, что показать пользователю.

Метод возвращает элемент списка по индексу только для неотрицательного индекса. Иначе - IllegalArgumentException:

import java.util.ArrayList; public class Main { static int getAt(ArrayList<Integer> list, int index) { if (index < 0) { throw new IllegalArgumentException("negative index"); } return list.get(index); } }

Вызов оборачивают в try-catch, чтобы отловить и неверный аргумент, и выход за границы списка:

import java.util.ArrayList; import java.util.Arrays; public class Main { static int getAt(ArrayList<Integer> list, int index) { if (index < 0) { throw new IllegalArgumentException("negative index"); } return list.get(index); } public static void main(String[] args) { ArrayList<Integer> data = new ArrayList<>(Arrays.asList(10, 20, 30)); try { System.out.println(getAt(data, -1)); } catch (IllegalArgumentException e) { System.out.println("bad arg"); } catch (IndexOutOfBoundsException e) { System.out.println("out of list"); } } }

Та же схема работает для проверки диапазона процента. Несколько catch подряд позволяют развести сообщения для разных типов сбоя в одном месте вызова:

public class Main { static void percent(int value) { if (value < 0 || value > 100) { throw new IllegalArgumentException("out of range"); } System.out.println(value + "%"); } public static void main(String[] args) { try { percent(150); } catch (IllegalArgumentException e) { System.out.println("invalid percent"); } } }

Создайте метод ensureNonNegative с параметром n. Для n < 0 выбросьте new IllegalArgumentException с сообщением "negative". Иначе верните n.

Создайте метод divide с двумя целыми параметрами. При b == 0 выбросьте new ArithmeticException. Иначе верните частное. В main вызовите его с нулевым делителем в try-catch и выведите "fail" при ошибке.

Создайте метод charAtSafe со строкой и индексом. При отрицательном индексе выбросьте new IllegalArgumentException. Иначе верните символ строки. Обработайте вызов с слишком большим индексом через StringIndexOutOfBoundsException.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить