在最近經歷中,遇見了這樣一個問題,如何獲取當前源文件名以及代碼的行號,只是了解到C語言有預定義宏__FILE__、__LINE__,它們在預處理的時候都已經確定好了,但是在JAVA中應該怎么獲取輸出呢。
經過查找發現java提供以下方法來獲取當前文件名以及行號
Thread.currentThread().getStackTrace()[1].getFileName():獲取當前文件名;
Thread.currentThread().getStackTrace()[1].getLineNumber():獲取當前行號。
其中:Thread.currentThread().getStackTrace()返回的是一個數組形式的函數調用棧(棧頂在索引0處),其中第1個元素(索引為0)為最新調用的函數信息(getStackTrace()),第2個元素(索引為1)為當前函數(即調用getStackTrace()的函數)信息。