检索异常完全堆栈跟踪

phe*_*aal 7 java exception apache-commons lang

我想在我的项目中将Apache commons lang从2.4升级到3.1.我的实现引用了ExceptionUtil.getFullExceptionTrace(e),它在3.1中不再存在.删除的原因列为

"删除isThrowableNested,isNestedThrowable和getFullStackTrace,因为一旦你进入JDK 1.4,它们就是所有类型的无操作.LANG-491"

.关于这一变化的几个问题:

  1. 我很困惑,如果这意味着我们需要探索一些其他方法来检索完整的堆栈跟踪,或者我们可以简单地用ExceptionUtils.getStackTrace(e)替换.

  2. 有什么想法在jdk 1.4之后改变了什么来使方法变得多余?

  3. 我们不能简单地做e.toString(),其中e是我的Exception实例吗?

谢谢

Eug*_*hov 9

Java 1.4 在Throwable类上引入了getCause()方法,该类是所有Exception类的父类.如果需要将堆栈跟踪作为String,可以使用ExceptionUtils.getStackTrace(e)或类似的东西:

  Exception e = ...
  StringWriter sw = new StringWriter();
  e.printStackTrace(new PrintWriter(sw));
  String stack Trace = sw.toString();
Run Code Online (Sandbox Code Playgroud)

请参阅有关在JIRA问题LANG-491上从ExceptionUtil中删除方法的其他讨论.