【问题标题】:Custom Runtime exception not printing the stack trace自定义运行时异常不打印堆栈跟踪
【发布时间】:2015-12-26 15:02:35
【问题描述】:

对于这个非常基本的问题,我很抱歉,但我被这个问题困住了,我无法找到解决方案。

我有一个核心 Java 应用程序(Java 版本是 1.6)。从我的应用程序中,我正在调用 jar 中的一个方法,该方法引发了一个自定义运行时异常。

我没有捕捉到这个异常,但 JVM 仍然没有打印堆栈跟踪。

当抛出运行时异常但未被捕获时,JVM 默认不会打印堆栈跟踪吗? 还是我遗漏了一些我可以检查的东西?

提前致谢。

-桑迪普

【问题讨论】:

  • 检查jar里面的方法。如果 jar 中没有源代码,可以使用 java 反编译器。
  • 我可以访问jar的代码,甚至它没有捕获任何异常。只有在满足特定条件时才抛出运行时异常。
  • 请出示代码。
  • 可以继承 Exception(String message,..., boolean writableStackTrace),即堆栈跟踪是否应该是可写的。
  • 我刚刚检查过:捕获和调用 printStackTrace 不起作用,而 getStackTrace 什么也没给你。 - 如果你有代码,你可以看到自定义异常是如何定义的,我的假设是否正确。 class Custom extends Exception { public Custom( String msg ){ super( msg, null, false, **false** ); } } -- 最后一个false就是那个。

标签: java exception stack-trace


【解决方案1】:

AFAIK,JRE 应该打印未捕获异常的堆栈跟踪。但你总是可以自己做:

try {
  someObject.someMethod();
} catch (Throwable t) {
  t.printStackTrace();
  throw t;
}

【讨论】:

  • 您的意思是 writableStackTrace 设置为 false,就像对问题的评论一样?在这种情况下,这是真的。
猜你喜欢
  • 1970-01-01
  • 2011-01-18
  • 2012-09-04
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多