如何找到引发异常的原始类名?

时间:2011-07-28 14:20:47

标签: java exception

提供对Throwable对象的简单引用。我想找出抛出它的原始类。我不再在这个班级里面,所以我所拥有的是一个Throwable对象从某个地方传入。

4 个答案:

答案 0 :(得分:7)

使用GetStackTrace的{​​{1}}属性检索Throwable

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/StackTraceElement.html

getClassName()

这将打印所有涉及的课程。

答案 1 :(得分:1)

您是否在Throwable对象上尝试过GetStackTrace()?

答案 2 :(得分:1)

使用GetStackTrace( )检索班级名称。

  

提供对打印的堆栈跟踪信息的编程访问   的printStackTrace()。

答案 3 :(得分:0)

堆栈跟踪将显示异常,但异常也可能有原因,依此类推。

原始类很可能是最后一个原因中的第一个堆栈跟踪元素,因此您可能希望根据需要更改收集逻辑。

以下是按出现顺序收集所有相关课程的方法。

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