В наших файлах журнала мы находим следующее:
[2012-09-24 00:09:32.590 +0000UTC] ERROR host server1 [] [] somepackage.someclass [] [Unknown] [V3rAqPaDvvAAAAExEXhdWGyh] [pjsQwTGHzxcAAAE5j4YdGvWV] "ThreadName" Some error happened: java.lang.ArrayIndexOutOfBoundsException: null
Существует только одна строка, и нет трассировки стека исключений.
Блок try
в котором происходит это исключение, выполняет динамически сгенерированный Java-байт-код, который был создан с использованием javassist.
Меня интересуют две вещи:
-
java.lang.ArrayIndexOutOfBoundsException
: null - Отсутствует трассировка стека, несмотря на вызов ловушки журнала с использованием
logger.error("message", theException)
внутри блокаcatch
, что обычно приводит к полной трассировке стека, печатаемой в файле журнала.
Мои вопросы:
-
Какой код может вызвать вывод журнала "java.lang.ArrayIndexOutOfBoundsException: null". Я пытаюсь воспроизвести это с помощью тестовой программы без удачи. Я всегда получаю что-то вроде "java.lang.ArrayIndexOutOfBoundsException: Index: 3" или подобное.
-
Может ли быть причиной пропуска трассировки стека то, что этот код генерируется динамически во время выполнения, и поэтому регистратор /JVM не "знает" трассировку стека или соответствующие номера строк?
В настоящее время мы проводим отладку и расследование, чтобы получить больше информации, но, возможно, это кому-то знакомо.