Необрабатываемые исключения не требуют обработки. Но может возникнуть ситуация, когда потребуется обрабатывать и их (например, отобразить текст исключения в JFrame). Существует три способа выполнить обработку runtime-исключений:
- Вызвать метод setUncaughtExceptionHandler() у класса Thread - настройка обработчика для выбранного потока.
- Определить свой класс ThreadGroup и переопределить метод uncaughtException() - изменение поведения обработчика для всех потоков в группе.
- Вызвать статический метод класса Thread setDefaultUncaughtExceptionHandler() - установка поведения по умолчанию для всех потоков.
class MyHandler implements Thread.UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread thread, Throwable e) {
System.out.printf("Caught exception: %s %s\n", e.getClass(), e.getMessage());
}
}
public static void main(String[] args) {
Thread.setDefaultUncaughtExceptionHandler(new MyHandler());
for (int i = 10; i >= 0; i--) {
int div = 100 / i; // ArithmeticException при делении на ноль
}
}
Вывод:
/*
Caught exception: class java.lang.ArithmeticException / by zero
*/