获取方法调用者的行号?

时间:2015-06-30 01:20:11

标签: java debugging logging line-numbers

有没有办法在Java中获取方法调用者的行号?我不想要抛出异常。我是否必须使用堆栈跟踪?有没有办法以便宜的方式做到这一点?

编辑:为了澄清,我不想要来电者班级的行号。我想要调用方法的确切行。

2 个答案:

答案 0 :(得分:10)

Aasmund 提供的答案有效,但您最好使用

Thread.getStackTrace()而非Exception.getStackTrace(),因为您实际上并不对此例外感兴趣。

实际上,它不会产生太大的影响,但您的代码会更清楚地反映您的意图。

int callersLineNumber = Thread.currentThread().getStackTrace()[1].getLineNumber();

答案 1 :(得分:0)

您不需要实际抛出异常; 创建一个就足够了:

int callersLineNumber = new Exception().getStackTrace()[1].getLineNumber();

请注意,这既不需要try / catch也不需要throws声明。