gpt4 book ai didi

java - 获取没有堆栈跟踪的 "ArrayIndexOutOfBoundsException: null"

转载 作者:太空狗 更新时间:2023-10-29 22:39:13 25 4
gpt4 key购买 nike

在我们的日志文件中,我们发现以下内容:

[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 block 正在执行使用 javassist 创建的动态生成的 Java 字节码。

我想知道两件事:

  1. java.lang.ArrayIndexOutOfBoundsException: null
  2. 尽管在 catch block 中使用 logger.error("message", theException) 调用日志 Hook ,但缺少堆栈跟踪,这通常会导致完整的堆栈跟踪被打印在日志文件中。

我的问题:

  1. 什么样的代码会导致日志输出“java.lang.ArrayIndexOutOfBoundsException: null”。我尝试用一​​个没有运气的测试程序重现这个。我总是得到类似“java.lang.ArrayIndexOutOfBoundsException: Index: 3”或类似的东西。

  2. 缺少堆栈跟踪的原因可能是此代码是在运行时动态生成的,因此记录器/JVM 不“知道”堆栈跟踪或相关行号?

我们目前正在调试和调查以获取更多信息,但这对某些人来说可能听起来很熟悉。

最佳答案

  1. Stringnull 引用连接可能会给您这样的消息:

    Object obj = null;
    throw new ArrayIndexOutOfBoundsException("" + obj);
  2. 如果您使用的是 Oracle JVM,您可能需要添加 -XX:-OmitStackTraceInFastThrow 作为附加参数,看看它是否有帮助。对于一些基本的异常,JVM 会在一段时间后重用相同的异常实例,在这种情况下,不再有堆栈跟踪。此选项可防止重用,因此您始终可以获得堆栈跟踪。

编辑说明:最后一条也适用于最新版本的 OpenJDK(例如 1.8)

关于java - 获取没有堆栈跟踪的 "ArrayIndexOutOfBoundsException: null",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12582370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com