Назад к вопросам
JuniorТеорияЧасто
Что произойдёт при компиляции и запуске программы?
public class Main {
public static void main(String[] args) {
int d = 0;
try {
System.out.println(10 / d);
} catch (Exception e) {
System.out.println("error");
} catch (ArithmeticException e) {
System.out.println("zero");
}
}
}Не скомпилируется
- Ждать
error: при запуске Java действительно берёт первый подходящийcatch, но здесь компилятор видит, что второй не выполнится никогда, и не принимает программу. - Ждать
zero: Java не выбирает самый точныйcatch, а проверяет их сверху вниз, поэтому наследник должен стоять раньше родителя.
- Как исправить программу, чтобы она печатала
zero? - Что делает
catch (ArithmeticException | NumberFormatException e)?