Выбрасывание исключения в Java
Оператор throw создает исключение и
немедленно прерывает текущий участок кода.
Управление ищет подходящий catch выше
по стеку вызовов. Если его нет, программа
завершается с сообщением об ошибке:
throw new IllegalArgumentException("message");
В учебных задачах удобно выбрасывать готовые
типы платформы. Исключение IllegalArgumentException
подходит, когда параметр нарушает правило:
public class Main {
static void requireEven(int n) {
if (n % 2 != 0) {
throw new IllegalArgumentException("even only");
}
System.out.println(n);
}
public static void main(String[] args) {
try {
requireEven(3);
} catch (IllegalArgumentException e) {
System.out.println("rejected");
}
}
}
Исключение ArithmeticException можно выбросить
явно, если деление на ноль проверяют вручную
до операции /:
public class Main {
static int safeDiv(int a, int b) {
if (b == 0) {
throw new ArithmeticException("zero divisor");
}
return a / b;
}
public static void main(String[] args) {
try {
System.out.println(safeDiv(8, 0));
} catch (ArithmeticException e) {
System.out.println("cannot divide");
}
}
}
Текст в конструкторе исключения доступен
через e.getMessage() в блоке catch.
Сообщения в коде пишите на английском, как
и имена переменных.
Создайте метод printIfPositive с
параметром n. Для n <= 0
выбросьте new IllegalArgumentException
с сообщением "not positive".
Иначе выведите n.
В main вызовите printIfPositive(-2)
внутри try. В catch для
IllegalArgumentException выведите
e.getMessage().