【发布时间】:2017-07-01 00:38:11
【问题描述】:
提供对Throwable 对象的简单引用。我只想找出抛出这个的原始类。我不再在这个类中,所以我只有一个从某个地方传入的 Throwable 对象。
【问题讨论】:
提供对Throwable 对象的简单引用。我只想找出抛出这个的原始类。我不再在这个类中,所以我只有一个从某个地方传入的 Throwable 对象。
【问题讨论】:
使用Throwable 的GetStackTrace 属性来检索getClassName()。
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/StackTraceElement.html
for (StackTraceElement ste : myThrowableObject.getStackTrace())
{
System.out.println(ste.getClassName());
}
这将打印所有涉及的类。
【讨论】:
您是否在 Throwable 对象上尝试过 GetStackTrace()?
【讨论】:
使用GetStackTrace( ) 检索类名。
提供对由打印的堆栈跟踪信息的编程访问 printStackTrace()。
【讨论】:
堆栈跟踪会显示异常,但异常也可能有原因,等等。
原始类很可能是最后一个原因中的第一个堆栈跟踪元素,因此您可能需要根据需要更改集合逻辑。
以下是按出现顺序收集所有相关类的方法。
Exception e = getTheException();
Set<String> classNames = new LinkedHashSet<>();
Throwable cause = e;
while (cause != null) {
Stream.of(cause.getStackTrace()).forEach(element-> classNames.add(element.getClassName());
cause = cause.getCause();
}
【讨论】: