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

时间:2015-01-21 13:20:55

标签: java line stack-trace

假设我收到以下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 个答案:

答案 0 :(得分:2)

显然,您首先需要将源文件放在类路径中。这个或至少在您知道可以找到它们的位置。

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

后者具有源文件名和行(IF AVAILABLE; jar可能已经或可能没有使用调试信息编译);从那时起,阅读,找行,打印!