如何以编程方式从发生异常的源代码中读取行

时间:2017-03-08 11:32:24

标签: java plugins eclipse-plugin

我正在设计一个eclipse插件,它会在发生异常时从控制台读取堆栈跟踪。

插件基本上用于发生异常时基于内容的搜索。用户明确地从堆栈跟踪中选择关键字,但插件隐含地需要源代码中的行导致异常,因此源代码行和关键字可以一起用于更好的搜索结果。在这种情况下,插件无法更改源代码。

控制台为我提供了文件,包和行号,但我希望源代码中的相应行导致异常。

例如,如果我有像

这样的例外
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 10, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at Test.main(Test.java:13)

我希望Test.java源代码中的第13行

1 个答案:

答案 0 :(得分:0)

您可能没有确切的可重用代码,但这是您可以探索的内容。

在Throwable类中,您可以访问StackTrace元素列表,并从传播它的位置获取代码的行号。

注意:

  

有时候你可能会获得多个StackTrace Elements   异常对象,你可以然后迭代并得到你想要的那个   。的行号。

这样的东西
catch(Throwable e){
             e.getStackTrace()[e.getStackTrace().length - 1].getLineNumber();
         }