小さな例:
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"
質問:
メッセージが発生した場所に関する情報が含まれておらず、スタック トレース、メッセージがないのはなぜですか?
私にとっては、例外メッセージは奇妙に見えます。