一种得到代码所在行号的方法

       RT,今天在论坛上看到有人提出这个问题,马上联想到当程序发生异常时,异常信息里面就包含了异常所在行的信息.既然这样,那我为何不再需要得到行号的地方new 一个Exception,然后分析其包含的行号信息呢?

      想法有了,剩下的就简单了,查了下Exception的相关文档,发现Throwable有个getStackTrace()的方法:

getStackTrace

public StackTraceElement
[] getStackTrace
()
Provides programmatic access to the stack trace information printed by printStackTrace() . Returns an array of stack trace elements, each representing one stack frame. The zeroth element of the array (assuming the array's length is non-zero) represents the top of the stack, which is the last method invocation in the sequence. Typically, this is the point at which this throwable was created and thrown. The last element of the array (assuming the array's length is non-zero) represents the bottom of the stack, which is the first method invocation in the sequence.

Some virtual machines may, under some circumstances, omit one or more stack frames from the stack trace. In the extreme case, a virtual machine that has no stack trace information concerning this throwable is permitted to return a zero-length array from this method . Generally speaking, the array returned by this method will contain one element for every frame that would be printed by printStackTrace .

 

Returns:
an array of stack trace elements representing the stack trace pertaining to this throwable.

 

getLineNumber

public int getLineNumber
()
Returns the line number of the source line containing the execution point represented by this stack trace element. Generally, this is derived from the LineNumberTable attribute of the relevant class file (as per The Java Virtual Machine Specification , Section 4.7.8).

 

Returns:
the line number of the source line containing the execution point represented by this stack trace element, or a negative number if this information is unavailable.


最终的代码如下:

java 代码
  1. /**    
  2.  *得到Exception所在代码的行数    
  3.  *如果没有行信息,返回-1    
  4.  */      
  5.   public   static   int  getLineNumber(Exception e){      
  6.      StackTraceElement[] trace =e.getStackTrace();      
  7.       if (trace== null ||trace.length== 0 )  return  - 1 ;    //      
  8.       return  trace[ 0 ].getLineNumber();      
  9.  }     


使用方法如下:

java 代码
  1. System.out.println( "Current line number :" +getLineNumber( new  Exception()));     

就可以将System.out.println所在行的行号输入.

ps:根据getStackTrace说明文档的红色部分,说明getStackTrace返回内容并没有被硬性规定,因此我这种方法并不能保证在每一个JVM上都有效.但我暂时还不知道有没有其它更好的方法可以实现同样的功能.

而StackTraceElement有个getLineNumber的方法:

嵌入式系统(一):鸿蒙系统 本文为期末复习笔记,内容仅供参考???? 鸿蒙系统是一款面向万物互联时代的、全新的分布式操作系统 鸿蒙提出了基于同一套系统能力、适配多种终端形态的分布式理念 提供全场景(移动办公、运动健康、社交通信、指挥出行、媒体娱乐等)业务能力 华为是OpenHarmony开源项目的共建者、也是共享者之一 鸿蒙技术特性 分布式设计 一次开发,多端部署 系统与硬件解耦,弹性部署 三大分布式能力 分布式软总线 设备间互联互通提供分布式通信能力 从手动发现,进化成自发现 传输高带宽关键技术-极简协议 分布式数据管 阅读详情

相关推荐

有源滤波电路设计

目录一、低通滤波器1、同相输入低通滤波器(1)一阶低通滤波电路(2)二阶低通滤波电路(压控电压源;Sallen-Key)2、反相输入低通滤波器(1)一阶低通滤波电路(2)二阶低通滤波电路(无限增益多路反馈)二、高通滤波器1、同相输入高通滤波器(1)一阶高通滤波电路(2)二阶高通滤波电路(压控电压源;Sallen-Key)2、反相输入高通滤波电路(1)二阶高通滤波电路(无限增益多路反馈) 一、低通滤波器 1、同相输入低通滤波器 (1)一阶低通滤波电路 即在一阶无源低通滤波器的基础上,加了一个集成运放。 它的

qq_41873236的博客 3万+

在项目开发中统计代码行数的6种方式

六种不同的方式,都能方便的统计代码行数,但也各有特点。如find命令行适用不同系统,而PowerShell在Windows系统下可用;jscpd统计代码行数和重复度。安装了Git工具的,可以使用git log统计代码的修改行数、不同人员和时间段的各种提交修改等。代码编辑器,有各种插件工具,除了统计代码行数,还能区分文件格式、注释行数、空行,也比较直观方便。自己实现一个统计工具,能够实现更多的功能,并进行定制化处理,或者集成到构建工具中等等,满足更多需求。

jimojianghu的专栏 7万+

YOLOv11 网络结构详解:一文看懂 Backbone、Head、C3k2、SPPF 和 Detect 检测头

在使用 YOLOv11 进行目标检测时,我们经常会接触到或这样的模型配置文件。backbone和head分别是什么意思?ConvC3k2SPPFC2PSA这些模块分别起什么作用?P3/8、P4/16、P5/32 代表什么?为什么最后 Detect 要同时接收 3 个不同尺度的特征图?YOLOv11n、YOLOv11s、YOLOv11m、YOLOv11l、YOLOv11x 的区别在哪里?

learnerYC的博客 1816

项目开发中的代码行数统计方法:六种常见方式与工具对比

本文介绍了六种统计代码行数的方法:1) Linux下使用find和wc命令;2) Windows下使用PowerShell;3) 利用Git命令统计版本库代码;4) 代码编辑器插件;5) 使用jscpd工具检测重复代码;6) 自定义Python脚本实现。每种方式各有优劣,适用于不同平台和场景,开发者可根据需求选择合适的方法来评估项目规模、检测代码质量或衡量团队产出。

智造编程 5302

【屠龙之术】SAP 欧洲公司 高级合规性报表 FEC

所谓FEC ,其实是法国税务局要求法国的公司,每年要向税务局进行提交的税务报告,这个报告有特殊的格式,进行加密,法国公司要在收到税务局通知以后,及时进行报送,如果不报送,或者报送不合格文件,将面临5000欧的罚款。-----------------------------------------------进入正文----------------------------------------------------------------------有专门的T-code,PPT我就不贴了,我直接截图。

竹大的博客 1962

SAP STO流程实战:如何配置外向交货单PGI后自动生成内向交货单(附避坑指南)

本文详细解析了SAP STO流程中,如何配置实现外向交货单发货过账(PGI)后自动生成内向交货单。通过分步指南,重点阐述了SPED输出类型、输出条件记录、收货点及确认控制码等关键配置,并提供了针对“No goods receipt possible”等常见错误的避坑指南,助力实现跨公司物料转移流程的自动化与高效衔接。

weixin_28327051的博客 395

如何统计代码行数

在Linux环境中,使用几种命令行工具来统计代码行数。

lly576403061的博客 3373

chromium通信系统-ipcz系统(二)-ipcz系统代码实现-同Node通信

在chromium通信系统-mojo系统(一)-ipcz系统基本概念一文中我们介绍了ipcz的基本概念。 本章我们来通过代码分析它的实现。 handle系统 为了不对上层api暴露太多细节,实现解耦,也方便于传输,ipcz系统使用handle表示一个对象,handle类似于文件描述符,用IpczHandle类型表示ipcz系统内的一个对象。一个可以用IpczHandle 句柄表示的对象必须是APIObject子类。APIObject数据结构如下 class APIObject : public RefCou

woai110120130的专栏 1775

如何统计项目代码行数

Linux命令入门及使用

beibeix2015的博客 1万+

第67步 时间序列建模实战:ARIMA建模(Stata)

第67步 时间序列建模实战:ARIMA建模(Stata)

Jet4505的博客 6823

重复点击提交、产生多笔数据、保持数据只操作一次---->接口幂等性校验

幂等校验一、工作真实场景 + 常出现场景二、工作解决方案 + 百度解决方案 一、工作真实场景 + 常出现场景 真实场景:在一次工作中进行成品出库创建成品出库单时,手抖了一下,重复点击了两次确定(提交表单)。结果很神奇的发现居然产生了两笔一模一样的数据(流水号都一样),当时就很懵逼,稍作思考,想想应该是在同一时刻创建了两个出库单。感觉很有意思(因为之前没有遇到过,写代码的时候也没有考虑到这个问题的发生),后面换了一种方式复现场景:提交表单时多次点击Enter按钮,还是会产生多笔重复数据。 常见场景: 订单接

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 6万+

java统计代码的行数

java统计代码的行数。

m0_57119230的博客 3904

【系统分析师】2025年下半年真题:案例分析-答案及详解(回忆版)

Redis相比Memcached在电商高并发场景下具有显著优势:支持持久化(RDB/AOF)、丰富数据结构(如有序集合实现排行榜)、原生支持集群和哨兵模式(高可用性)。布隆过滤器通过位数组和哈希函数预先存储所有合法订单ID,当查询请求到达时快速拦截无效ID(如伪造ID),避免其穿透缓存直接冲击数据库,从而预防缓存击穿问题。

数据知道的博客 5997

C#编程,try_catch中抛错是,显示代码中错误发生的方法及行号的一种方法。

用try-catch语句来处理预防异常的时候,不只是将错误显示,还希望错误信息尽可能的详细。 比如:错误发生在哪个方法里,哪一行,哪个类文件等。 这里提供一种方法。 事例代码: class Program { static void Main(string[] args) { try { ...

君一席 5032

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

代码中去除行号的方法

<br />转载 拷贝 代码去除行号2009-09-14 20:44对于新手来说,从其他地方拷贝代码来研究学习是很经常的事情,但是有的时候很不幸,拷贝过来的代码附带了令人烦恼的“行号”。比如下图的一段JavaScript代码: <br /><br />   如果代码少的话还可以,一个一个删除呗。多的话就是噩梦哦,还不如自己照着把代码输一遍呢。怎么办呢?<br />在vs中有一个小技巧,按住Alt键然后鼠标左键选择可以一整块的代码。如图:<br /><br /> <br />       哈哈,利用这个小技

henry19850318的专栏 3881

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

让DataGridView显示行号

本文转载自:https://www.cnblogs.com/junezhang/archive/2011/11/21/2257630.html 作者:JuneZhang 转载请注明该声明。如果DataGridView控件能显示行号,对我们寻找数据就非常方便,但DataGridView默认的属性中,不可设置显示行号。本文在DataGridView的RowPostPaint事件中进行绘制,实现了这个...

kkwant的博客 754

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

复制代码去除行号

/** * 在优快云、javaeye 等各大IT网站复制实例代码时候,在每行代码前总会有行数序列 * 手动一个一个删除序列太麻烦,于是写了个方法自动删除 * 例如复制过来的代码: * 001 第一行代码 * 002 第二行代码 * 003 第三行代码 * * @param path01 要替换的代码路径 * @

王月莹的专栏 4744

取出拷贝的代码前面的行号

有时候需要从网上搜集一些代码并运行看结果,但会发现行号也被复制下来了,纯手工的去除每行行号似乎不太现实,现用c实现。 此程序适用于行号后面跟了一个 ' .' #include #include #define rownum 100 //估算最长行函数的总字节数,注意包括空格数目,为了函数美观,一般情况下每行字符数目不会太大,

Do_Cool_Thing 1444

在csdn中复制的代码 去掉前面的行号

在csdn中复制的代码会有行号,如下: 1.  2.      3.          4.          5.     6. 解决方法: 利用notepad++的替换功能,如下图一个个查找替换便可:

yuan882696yan的专栏 1330

文章中插入代码显示行号的代码

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>JS+CSS让文本框显示行号代码</title> &l...

chexianggu9105的博客 429

如何快捷得去除代码中的行号?

通常,我们在写报告提交代码的时候,经常会在代码前添加行号,如下: 可是,这时候,需要复制代码运行的小伙伴就会觉得很麻烦,怎样快速去掉这些行号呢? 方法如下: 所需工具:Word 首先,复制这段代码,右键粘贴,选择只保留文本粘贴,这里一定要注意!!! 得到如下结果: 然后,我们按住键盘 Alt 键 选中一列,如下: 然后用键盘点删除键就OK了。 如下: 收工! ...

种花家的奋斗兔的博客 5230

拷贝的代码中去除行号的方法

对于新手来说,从其他地方拷贝代码来研究学习是很经常的事情,但是有的时候很不幸,拷贝过来的代码附带了令人烦恼的“行号”。比如下图的一段JavaScript代码: 如果代码少的话还可以,一个一个删除呗。多的话就是噩梦哦,还不如自己照着把代码输一遍呢。怎么办呢? 在vs中有一个小技巧,按住Alt键然后鼠标左键选择可以一整块的代码。如图: 哈哈,利用这个小技巧我们就可以很轻松的选中...

weixin_34050005的博客 115

如何添加行号 c语言,如何为程序代码加上行号

若需要将程序代码放进词交报告或做文件时,或许我们会想将程序代码加上行号方便讲解,如同博客园显示程序代码那样,我们该如何做呢?介绍使用环境:Visual C++ 9.0/视觉演播室2008年一段C++的小程序,可以帮程序代码加上行号后输出。map_code_line.cpp/C++1/*2 (c) OOMusou 2008年34文件名 : map_code_line.cpp5编译器 : ...

weixin_39731586的博客 1031

eclipse中如何去掉复制代码有行号的数字

当我想查找别人资料,想复制别人的代码,但别人的代码中序号行数数字,怎么能快速去除呢,如以下截图所示 首先将你的带有行号的代码拷到一个类中。你会看到一大堆的错误,不用急。 注意将视图切换到java或java ee。使用快捷键alt+shift+a进入选择状态。你会看到鼠标变成了一个“+”号。 选择不包含行号的代码...

weixin_34034670的博客 426

vim打开关闭行号的小技巧分享

今天有点小空和大家分享一下vim中方便打开和关闭行号的方法。 平时我们要显示行号就得在配置文件中设置 set nu(number) 这个就可以在打开文件时显示行号。但是这个问题就来了,我们在编辑的过程中想要用鼠标选择复制一部份内容时,就会连行号一块给选择复制的。这些行号我们的代码中可是不需要的。我们要么一个个的把它给删了,要么先关闭行号再选择复制。 先说说一个个删除吧,少了还可以多了呢,是不是很不好玩呢?? 再说说关闭行号吧,我是不是要先修改一下配置文件,set nonumber 然后 再重新打.

lirise的博客 909

转:复制优快云的BLOG代码,去掉前面行号的方法

复制优快云的BLOG代码,去掉前面行号的方法[@more@]我们如果从优快云的BLOG复制代码,出现前面的行号,比如 1. /* 文本没有缩写 */ 2. /* Specify blanket rules...

cuidi0766的博客 257
上一篇: 网络词汇表
下一篇: 用动态代理进行修饰
JavaSxy
博客等级 码龄21年 1粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值