Небольшой пример:UncaughtExceptionHandler изменяет сообщение исключения
public class App {
public static void main(String[] args) {
throw new RuntimeException("Test exception");
}
}
Печатает следующие, как и ожидалось:
Exception in thread "main" java.lang.RuntimeException: Test exception
at App.main(App.java:5)
Позволяет изменять эту программу:
public class App {
public static void main(String[] args) {
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
if (e instanceof RuntimeException) throw (RuntimeException)e;
}
});
throw new RuntimeException("Test exception");
}
}
распечаток:
Exception: java.lang.RuntimeException thrown from the UncaughtExceptionHandler in thread "main"
Вопрос:
Почему сообщение не содержит никакой информации о том, где это происходит, и нет трассировки стека, сообщение?
Что касается меня сообщение об ошибке выглядит странно.
Параметр 'UncaughtExceptionHandler' предназначен для * ручка * неперехваченные исключения не бросать исключения. – Holger