Я создал глобальный обработчик исключений:исключения резьбы без StackTrace
Thread.setDefaultUncaughtExceptionHandler(new DefaultUncaughtExceptionHandler());
с довольно простой реализацией:
public class DefaultUncaughtExceptionHandler implements UncaughtExceptionHandler {
public static final Logger logger = LoggerFactory.getLogger(DefaultUncaughtExceptionHandler.class);
@Override
public void uncaughtException(Thread t, Throwable e) {
logger.error("Uncaught Exception detected in thread {}", t, e);
}
}
иногда я вижу в журналах этого исключения в несколько раз:
[AWT-EventQueue-0] DefaultUncaughtExceptionHandler - Uncaught Exception detected in thread Thread[AWT-EventQueue-0,6,main]
java.lang.ArrayIndexOutOfBoundsException: null
, но я не могу найти, откуда он.
Как вы думаете, почему stacktrace пуст? Он не должен быть пустым, все потоки должны создаваться, по крайней мере, из основного «основного» потока или любого другого.
ли другие исключения войти должным образом, включая их трассировки стека? Просто чтобы убедиться, что с вызовом журнала нет проблем. –
Трассировка стека не содержит информации о родительском потоке. Он просто содержит стек текущего потока, независимо от того, какой поток начал его запускать. – RealSkeptic
В какой библиотеке находятся Logger и LoggerFactory? – ControlAltDel