在我们的日志文件中,我们发现以下内容:
[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
块正在执行使用 javassist 创建的动态生成的 Java 字节码。
我想知道两件事:
- :
java.lang.ArrayIndexOutOfBoundsException
空 logger.error("message", theException)
尽管在块内部调用了日志挂钩,但缺少堆栈跟踪,catch
这通常会导致在日志文件中打印完整的堆栈跟踪。
我的问题:
什么样的代码会导致日志输出“java.lang.ArrayIndexOutOfBoundsException: null”。我尝试用一个没有运气的测试程序来重现这个。我总是得到类似“java.lang.ArrayIndexOutOfBoundsException:Index:3”或类似的东西。
缺少堆栈跟踪的原因可能是该代码是在运行时动态生成的,因此记录器/JVM 不“知道”堆栈跟踪或相关的行号?
我们目前正在调试和调查以获取更多信息,但也许这对某些人来说听起来很熟悉。