`
jiagyao
  • 浏览: 99313 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

如何在Java中获取当前代码行行号

阅读更多
为了实现自定义的log类,能够输出具体的代码行行号,我通过使用StackTraceElement对象实现了。


这里指出需要注意的几个问题:
1. 程序中返回的代码行行号,是新建StackTrackElement对象的那一行。
2. 可以通过传参的方法实现输出特定行行号。具体实现见代码。


1/** 


 2 * 
 3 */
 4package leo.demo.training;
 5
 6/** 


 7 * Get current java file name and current code line number
 8 * @author Leo Xie
 9 */
10public class CurrentLine { 
11    /** *//** http://www.mscto.com 
12     * @param args
13     */
14    public static void main(String[] args) { 
15        StackTraceElement ste1 = null;
16        
17        // get current thread and its related stack trace 
18        StackTraceElement[] steArray = Thread.currentThread().getStackTrace();
19        int steArrayLength = steArray.length;
20
21        String s = null; 


22        
23        // output all related info of the existing stack traces
24        if(steArrayLength==0) { 
软件开发网

25            System.err.println("No Stack Trace.");
26        } else { 
27            for (int i=0; i<steArrayLength; i++) { 
28                System.out.println("Stack Trace-" + i);
29                ste1 = steArray[i];
30                s = ste1.getFileName() + ": Line " + ste1.getLineNumber(); 


31                System.out.println(s);
32            }
33        }
34        // the following code segment will output the line number of the "new " clause 
35        // that's to say the line number of "StackTraceElement ste2 = new Throwable().getStackTrace()[0];"
36        StackTraceElement ste2 = new Throwable().getStackTrace()[0]; http://www.mscto.com 
37        System.out.println(ste2.getFileName() + ": Line " + ste2.getLineNumber());
38        // the following clause will output the line number in the external method "getLineInfo()" 

39        System.out.println(getLineInfo());
40        // the following clause will output its current line number
41        System.out.println(getLineInfo(new Throwable().getStackTrace()[0])); 
42    }
43    
44    /** *//** 
45     * return current java file name and code line number
46     * @return String
47     */
48    public static String getLineInfo() { 


49        StackTraceElement ste3 = new Throwable().getStackTrace()[0];
50        return (ste3.getFileName() + ": Line " + ste3.getLineNumber()); http://www.mscto.com 
51    }
52    
53    /** *//** http://www.mscto.com 
54     * return current java file name and code line name
55     * @return String
56     */
57    public static String getLineInfo(StackTraceElement ste4) { 

58        return (ste4.getFileName() + ": Line " + (ste4.getLineNumber()));
59    }
60}
分享到:
评论

相关推荐

    Java编程实现获取当前代码行行号的方法示例

    在Java编程中,获取当前代码行行号对于debug和log记录非常重要。有了当前代码行行号,我们可以快速定位错误的代码位置,提高开发效率和代码质量。 二、StackTraceElement对象的使用 StackTraceElement对象是Java...

    JAVA_连连看_源代码行行注释

    《JAVA_连连看_源代码行行注释》 该程序是使用Java语言实现的一款连连看游戏,通过Myeclipse 8.51作为开发环境,兼容Windows XP、Windows 7等操作系统。游戏具备基本功能,如退出、重列、再来一局,适合在普通...

    C/C++/JAVA源代码统计器

    统计指定目录C/C++/JAVA源代码的代码行,注释行和空白行行数。可以用通配符(*和?)指定要统计的文件的类型,可以指定多个文件类型

    行行重行行读后感.doc

    在当前社会,如五常这样的地方正面临从农村向城市的转型,如何平衡不同群体的利益,协调传统村落与现代城市的关系,以及如何持续发展村级经济,都是亟待解决的挑战。 回顾费老的《行行重行行》,我们可以感受到他对...

    jQuery实现获取table中鼠标click点击位置行号与列号的方法

    为了获取行号和列号,我们需要找到该单元格在父`tr`(行)中的索引(列号)以及该`tr`在父`tbody`(表格体)或整个`table`中的索引(行号): ```javascript var tdSeq = $(this).parent().find("td").index($(this...

    VC 获取所有进程并进行管理-进程管理器.rar

    VC 6.0枚举获取所有进程并进行管理-模拟一个进程管理器的写法,枚举Windows中所有正在运行的进程,本示例将演示如何获取进程路径,打开进程句柄,获取进程优先级,终止进程主函数,创建状态栏,获取当前行行号,...

    java基础程序笔记.docx

    该笔记主要介绍Java基础中的一些程序案例,包括打印星号、数据结构基础的原理程序等,可以用来复习Java基础知识,通过反复练习,巩固旧识。 1. a1_15_1【程序目标】打印 * * * 该程序的目标是打印一个由星号组成的...

    在文件每行行首与行尾添加东西

    在文件每行行首与行尾添加东西拼接SQL 有用

    word中实现代码自动显示行号

    - 使用 `Selection.TypeText` 在当前行前面插入行号。 - 使用 `Selection.MoveDown` 将光标下移一行。 #### 使用宏的步骤 1. **启用宏**: - 在 Word 的“文件”菜单中选择“选项”,然后点击“信任中心”下的...

    使用JavaFX实现的中缀转后缀 计算器(可以负数小数点括号)期末作业满分答案,大量注释(行行注释保证看懂)

    利用BigDecimal 大数据类 来保证精度 例如Double 2-1.1=0.89999,在大数据类就无异常 例如 9+(-9)=0 9--6=15 9*(-9--3)= -54 3 + (-2) -1 = 0 -9*(9--2)*-3 = 297 实现了键位绑定 本计算器回退功能是直接...

    java 编程的抢钱游戏,功能比较全

    在这个游戏中,代码可能包含了类的设计,对象的创建和方法的调用,这些都是Java面向对象编程的核心概念。 游戏的实现会涉及到多线程技术。抢钱游戏可能会有多个玩家同时进行,这就需要并发处理。Java提供了Thread类...

    activeMQ消息中间件入门示例,行行注释

    2. `Producer.java` - 生产者的Java代码,展示了如何创建连接,建立Session,创建Producer,并发送消息到一个目的地。 3. `Consumer.java` - 消费者的Java代码,展示了如何建立连接,创建Session,创建Consumer,并...

    aes加密算法的行行移位代码

    aes加密算法实现行移位的verilog代码

    行行重行行

    行行重行行

    K3Cloud插件开发常用接口.docx

    在K3Cloud插件开发中,获取当前行号可以使用this.Model.GetEntryCurrentRowIndex("FEntity")方法,该方法需要传入单据体标识FEntity作为参数,返回当前行号int rowIndex。 2. 获取单据体集合 获取单据体集合可以...

    itext设置段落行间距.zip

    在IT行业中,生成PDF文档是一项常见的任务,特别是在报告、合同或者技术文档的制作上。iText是一个强大的Java库,专门...在实际操作中,结合具体的代码示例(如压缩包中的TestDemo),可以更好地理解和应用这些技术。

    源代码类型判断标准.docx

    1. 取出源代码文件中的所有行,并去除每行行尾多余的空格。 2. 统计每一种源代码类型关键词出现的次数。 3. 对所有的源代码类型进行一次筛选,筛选的条件是:如果文件后缀名与源代码类型不匹配,则关键词出现次数...

    Java实现OJ多组测试数据的输入方法

    在这个示例中,我们使用了`java.util.Scanner`类来从标准输入流中读取数据。`Scanner`类提供了多种方法来处理各种类型的数据,如`nextInt()`用于读取整数。`hasNext()`方法用于检查是否还有更多的输入数据,如果存在...

    jsp分页技术

    这部分代码实现了对当前页码的处理,并计算出每页第一条记录在数据库中的位置,以便后续查询时能够准确地获取对应的数据。 ```java int n = 0; while (n !rs.isAfterLast()) { // 查询并显示数据 } ``` 这部分代码...

    每行行首添加字符

    在文本文件每行行首添加字符!

Global site tag (gtag.js) - Google Analytics