【问题标题】:How to find originating class name where exception was thrown?如何找到引发异常的原始类名?
【发布时间】:2017-07-01 00:38:11
【问题描述】:

提供对Throwable 对象的简单引用。我只想找出抛出这个的原始类。我不再在这个类中,所以我只有一个从某个地方传入的 Throwable 对象。

【问题讨论】:

    标签: java exception


    【解决方案1】:

    使用ThrowableGetStackTrace 属性来检索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());
    }
    

    这将打印所有涉及的类。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        使用GetStackTrace( ) 检索类名。

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

        【讨论】:

          【解决方案4】:

          堆栈跟踪会显示异常,但异常也可能有原因,等等。

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

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

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

          【讨论】:

            猜你喜欢
            • 2013-07-23
            • 2012-05-20
            • 2010-12-25
            • 1970-01-01
            • 1970-01-01
            • 2023-03-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多