Ответ
Программа аварийно завершится. Неперехваченное (uncaught) исключение поднимается по стеку вызовов. Если оно достигает потока main и там нет обработчика, поток завершается, а JVM печатает трассировку стека (stack trace) в стандартный поток ошибок.
Пример и последствия:
public class Example {
public static void main(String[] args) {
methodA();
System.out.println("Эта строка никогда не выполнится.");
}
static void methodA() { methodB(); }
static void methodB() { int x = 10 / 0; } // ArithmeticException
}
Вывод в консоль:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Example.methodB(Example.java:7)
at Example.methodA(Example.java:6)
at Example.main(Example.java:3)
Почему это плохо:
- Пользователь видит техническую ошибку вместо понятного сообщения.
- Критический код (закрытие ресурсов, фиксация транзакций) после исключения не выполняется.
- В серверных приложениях это приводит к HTTP-ответу
500 Internal Server Error.
Решение: Всегда обрабатывайте исключения с помощью try-catch или явно объявляйте их в сигнатуре метода с throws, чтобы контролировать поток выполнения.