我正在设计一个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行
答案 0 :(得分:0)
您可能没有确切的可重用代码,但这是您可以探索的内容。
在Throwable类中,您可以访问StackTrace元素列表,并从传播它的位置获取代码的行号。
注意:
有时候你可能会获得多个StackTrace Elements 异常对象,你可以然后迭代并得到你想要的那个 。的行号。
像
这样的东西catch(Throwable e){
e.getStackTrace()[e.getStackTrace().length - 1].getLineNumber();
}