10

我正在尝试在我的项目中将 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 是我的异常实例吗?

谢谢

4

1 回答 1

11

Java 1.4 在 Throwable 类上引入了getCause()方法,该类是所有 Exception 类的父类。如果您需要以字符串形式获取堆栈跟踪,可以使用 ExceptionUtils.getStackTrace(e) 或类似的东西:

  Exception e = ...
  StringWriter sw = new StringWriter();
  e.printStackTrace(new PrintWriter(sw));
  String stack Trace = sw.toString();

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

于 2012-05-11T15:11:42.803 回答