Сообщение DefaultUncaughtExceptionHandler и тишина от 15.05.2015 13:51
Изменено 15.05.2015 14:07 mkind
Коллеги, добрый день!
(приложение является шаманской помесью swing + spring)
Устанавливаю UncaughtExceptionHandler потоку:
Класс представляет собой отсылку к логгеру:
Периодически ловлю в логе такую ошибку и следом за ней AWT поток начинает жутко тормозить:
И всё. Никак не удается вытащить stack trace побольше. Пробовал даже так (хотя и понимал, что не поможет)
В коде никто явно не бросает ArrayIndexOutOfBoundsException, изучение всех возможных циклов тоже ничего не дал. Есть подозрение, что ошибка где-то глубже.
В IntelliJ IDEA можно создать Java Exception Brakepoint, который можно натравить на конкретный класс исключения, но проблема в том, что я не могу подключиться дебагом на работающие приложение.
Может быть, есть другие способы изощренного логирования?
(приложение является шаманской помесью swing + spring)
Устанавливаю UncaughtExceptionHandler потоку:
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 поток начинает жутко тормозить:
[AWT-EventQueue-0] DefaultUncaughtExceptionHandler - Uncaught Exception detected in thread Thread[AWT-EventQueue-0,6,main]
java.lang.ArrayIndexOutOfBoundsException: nullИ всё. Никак не удается вытащить stack trace побольше. Пробовал даже так (хотя и понимал, что не поможет)
public void uncaughtException(Thread t, Throwable e) {
Set<Thread> threads = Thread.getAllStackTraces().keySet();
StringBuilder builder = new StringBuilder();
threads.forEach(thread -> builder.append(Arrays.toString(thread.getStackTrace())).append("\n"));
logger.error("Uncaught exception in thread " + Thread.currentThread().getName()+ "\n" + builder.toString(), e);
}В коде никто явно не бросает ArrayIndexOutOfBoundsException, изучение всех возможных циклов тоже ничего не дал. Есть подозрение, что ошибка где-то глубже.
В IntelliJ IDEA можно создать Java Exception Brakepoint, который можно натравить на конкретный класс исключения, но проблема в том, что я не могу подключиться дебагом на работающие приложение.
Может быть, есть другие способы изощренного логирования?
DefaultUncaughtExceptionHandler и тишина
Коллеги, добрый день!
(приложение является шаманской помесью swing + spring)
Устанавливаю UncaughtExceptionHandler потоку:
Класс представляет собой отсылку к логгеру:
Периодически ловлю в логе такую ошибку и следом за ней AWT поток начинает жутко тормозить:
И всё. Никак не удается вытащить stack trace побольше. Пробовал даже так (хотя и понимал, что не поможет)
В коде никто явно не бросает ArrayIndexOutOfBoundsException, изучение всех возможных циклов тоже ничего не дал. Есть подозрение, что ошибка где-то глубже.
В IntelliJ IDEA можно создать Java Exception Brakepoint, который можно натравить на конкретный класс исключения, но проблема в том, что я не могу подключиться дебагом на работающие приложение.
Может быть, есть другие способы изощренного логирования?
Кстати, дампы памяти и потоков не показали ничего интересного. Хип, как всегда, завален char[] и хэшмапами, ни одного дедлока или подозрительного blocking state.
(приложение является шаманской помесью swing + spring)
Устанавливаю UncaughtExceptionHandler потоку:
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 поток начинает жутко тормозить:
[AWT-EventQueue-0] DefaultUncaughtExceptionHandler - Uncaught Exception detected in thread Thread[AWT-EventQueue-0,6,main]
java.lang.ArrayIndexOutOfBoundsException: nullИ всё. Никак не удается вытащить stack trace побольше. Пробовал даже так (хотя и понимал, что не поможет)
public void uncaughtException(Thread t, Throwable e) {
Set<Thread> threads = Thread.getAllStackTraces().keySet();
StringBuilder builder = new StringBuilder();
threads.forEach(thread -> builder.append(Arrays.toString(thread.getStackTrace())).append("\n"));
logger.error("Uncaught exception in thread " + Thread.currentThread().getName()+ "\n" + builder.toString(), e);
}В коде никто явно не бросает ArrayIndexOutOfBoundsException, изучение всех возможных циклов тоже ничего не дал. Есть подозрение, что ошибка где-то глубже.
В IntelliJ IDEA можно создать Java Exception Brakepoint, который можно натравить на конкретный класс исключения, но проблема в том, что я не могу подключиться дебагом на работающие приложение.
Может быть, есть другие способы изощренного логирования?
Кстати, дампы памяти и потоков не показали ничего интересного. Хип, как всегда, завален char[] и хэшмапами, ни одного дедлока или подозрительного blocking state.