2010-09-08 49 views
3

在C/C++中,文件名由FILE返回并且行号由返回LINE。 Java确实有一个getFileName(),但似乎没有相应的getLineNumber()。 这将是很好能够做这样的事情:有没有办法获得java文件/行号?

catch (Exception e) { 
    System.err.println(this.getFileName() + this.getLineNumber() + e.getMessage()); 
} 

有没有办法让java文件/行号?

+2

这可能是太多了,但你可以做'e.printStackTrace()'。 – 2010-09-08 15:38:13

+0

实际上,e.printStackTrace()比获取*报告错误的位置的文件名和行号更有用。 – gawi 2010-09-08 16:28:20

+0

为什么JavaBeans IDE会警告:“应该删除e.printStackTrace()?” – jacknad 2010-09-08 19:11:42

回答

8
public static void main(String[] args) 
{ 
    StackTraceElement frame = new Exception().getStackTrace()[0]; 
    System.out.println(frame.getFileName()); 
    System.out.println(frame.getLineNumber()); 
} 
+6

恕我直言,最好是做Thread.currentThread()。getStackTrace()而不是构造一个例外。两者都是有效的和工作的解决方案:) – 2010-09-08 15:48:42

+1

@Alain O'Dea我同意。我没有意识到/忘记了Thread.currentThread()。getStackTrace() – gawi 2010-09-08 16:21:14

相关问题