我正在尝试在我的项目中将Apache commons从2.4升级到3.1。我的实现引用了ExceptionUtil.getFullExceptionTrace(e),它在3.1中不再存在。 删除的原因列为
“删除isThrowableNested,isNestedThrowable和getFullStackTrace 因为他们是JDK 1.4的所有类型的无操作。 LANG-491"
。 关于这一变化的几个问题:
我很困惑,如果这意味着我们需要探索一些其他方法来检索完整的堆栈跟踪,或者我们可以简单地用ExceptionUtils.getStackTrace(e)代替。
关于jdk 1.4之后发生什么变化以使该方法多余的任何想法?
我们不能简单地执行e.toString(),其中e是我的Exception实例吗?
由于
答案 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中删除方法的其他讨论。