检索异常完全堆栈跟踪

时间:2012-05-11 15:04:15

标签: java exception apache-commons lang

我正在尝试在我的项目中将Apache commons从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实例吗?

  4. 由于

1 个答案:

答案 0 :(得分:7)

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();

请参阅有关从JIRA issue LANG-491上的ExceptionUtil中删除方法的其他讨论。