Добрый День!
Помогите разобраться с основами java, а именно с работой с исключениями.
Есть простая программа, спрашивающая из консоли положительное число.
Если число отрицательное выбрасывается исключение и снова вызывается функция запроса числа.
Собственно пара вопросов:
1. Откуда берется java.util.NoSuchElementException, как это исправить?
2. Насколько оправданно в этом случае использование исключений, вместо старого доброго if-else блока?
3. Где стоит обрабатывать исключение. Непосредственно в функции где оно может выпасть или же в функции вызывающей ее?
4. Вообще используется ли прием reвызова функции из блока catch? Или это бред и обычно используются другие паттерны?
Благодарю) Код программы ниже)
import java.util.Scanner;
public class MyProgram {
public static void main(String[] args) {
int input;
try {
input = askForInput();
}
catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
input = askForInput();
}
System.out.println(input);
}
private static int askForInput() {
try (Scanner sc = new Scanner(System.in)) {
System.out.println("Введите положительное число:");
int result = sc.nextInt();
if (result < 0) {
throw new IllegalArgumentException("Вы ввели отрицательное число");
}
return result;
}
}
}