获取方法调用者的行号?
Get line number of method caller?
有什么方法可以得到Java中方法调用者的行号吗?我不想抛出异常。我必须使用堆栈跟踪吗?有什么方法可以便宜地做到这一点吗?
编辑:澄清一下,我不想要呼叫者 class 的行号。我想要调用方法的确切行。
您实际上不需要抛出异常; 创建一个就足够了:
int callersLineNumber = new Exception().getStackTrace()[1].getLineNumber();
请注意,这既不需要 try
/catch
也不需要 throws
声明。
Aasmund 提供的答案有效,但您最好使用
Thread.getStackTrace()
而不是 Exception.getStackTrace()
,因为您实际上对异常不感兴趣。
实际上,这不会有太大区别,但您的代码会更清楚地反映您的意图。
int callersLineNumber = Thread.currentThread().getStackTrace()[1].getLineNumber();
有什么方法可以得到Java中方法调用者的行号吗?我不想抛出异常。我必须使用堆栈跟踪吗?有什么方法可以便宜地做到这一点吗?
编辑:澄清一下,我不想要呼叫者 class 的行号。我想要调用方法的确切行。
您实际上不需要抛出异常; 创建一个就足够了:
int callersLineNumber = new Exception().getStackTrace()[1].getLineNumber();
请注意,这既不需要 try
/catch
也不需要 throws
声明。
Aasmund 提供的答案有效,但您最好使用
Thread.getStackTrace()
而不是 Exception.getStackTrace()
,因为您实际上对异常不感兴趣。
实际上,这不会有太大区别,但您的代码会更清楚地反映您的意图。
int callersLineNumber = Thread.currentThread().getStackTrace()[1].getLineNumber();