gpt4 book ai didi

Java 异常堆栈跟踪不打印

转载 作者:搜寻专家 更新时间:2023-10-31 08:05:15 25 4
gpt4 key购买 nike

我有以下代码:

import org.apache.commons.lang.exception.ExceptionUtils;
public void myMethod() {
try {
// do something
} catch (Exception e) {
System.out.println(ExceptionUtils.getStackTrace(e)); // prints "java.lang.NullPointerException"
System.out.println(ExceptionUtils.getFullStackTrace(e)); // prints "java.lang.NullPointerException"
e.printStackTrace(); // prints "java.lang.NullPointerException"
}
}

我希望看到的输出是带有行号和失败类层次结构的完整堆栈跟踪。例如,

Exception in thread "main" java.lang.NullPointerException
at org.Test.myMethod(Test.java:674)
at org.TestRunner.anotherMethod(TestRunner.java:505)
at java.util.ArrayList(ArrayList.java:405)

此代码正在一个更大的应用程序中运行,该应用程序也有 log4j,但我希望能够将异常放入字符串中,以便我可以将其作为电子邮件发送给 java 开发人员。

有人知道如何将完整的堆栈跟踪捕获到字符串吗?我无法使用 Thread.currentThread().getStackTrace(),因为此应用程序在 Java 4 上运行。可能是什么阻止了上述代码打印完整的堆栈跟踪?

最佳答案

这是因为 java 在服务器模式下运行时会进行一些代码优化 (java -server)跳过这个。在 java args 中使用 -XX:-OmitStackTraceInFastThrow有关详细信息,请参见下面的链接:

http://jawspeak.com/2010/05/26/hotspot-caused-exceptions-to-lose-their-stack-traces-in-production-and-the-fix/

关于Java 异常堆栈跟踪不打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12372128/

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