代码之家  ›  专栏  ›  技术社区  ›  math_law

Java显示StackTrace中一行的实际Java代码行

  •  2
  • math_law  · 技术社区  · 10 年前

    假设我收到以下java异常

    ERROR - Error occured while reading properties. (MyPropertyReader.java) 
        java.lang.NullPointerException
            at com.x.MyPropertyReader.init(PropertyReader.java:**222**)
            at com.x.MyPropertyReader.<init>(PropertyReader.java:119)
    

    如何找出第222行的代码块到底是什么样子的?

    例如:上述异常是由于以下代码行造成的,我希望在日志文件中看到类似的以下行。

    propertyConfiguration.getProperty("REPORT_INFLUENCE_THRESHOLD"))).trim());
    

    我想看 REPORT_INFLUENCE_THRESHOLD 日志文件中的字符串。 然而,我总的来说很好奇如何 以编程方式 在222中打印行。

    1 回复  |  直到 10 年前
        1
  •  2
  •   fge    10 年前

    显然,你首先需要, 将源文件放在类路径中。 这或者至少在你知道你可以找到他们的地方。

    然后你会使用 Throwable 's .getStackTrace() 它返回一个数组 StackTraceElement s .

    后者具有源文件名和行(如果可用;一个jar可能已经用调试信息编译过,也可能没有);从那时起,阅读,查找行,打印!