android开发中怎么通过Log函数输出当前行号和当前函数名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class Debug { public static int line(Exception e) { StackTraceElement[] trace = e.getStackTrace(); if (trace == null || trace.length == 0 ) return - 1 ; // return trace[ 0 ].getLineNumber(); } public static String fun(Exception e) { StackTraceElement[] trace = e.getStackTrace(); if (trace == null ) return "" ; // return trace[ 0 ].getMethodName(); } } |
使用场景:
1 2 3 4 5 6 7 8 | public class test { public static String DI(Exception e) { return Debug.line(e)+ "|" +Debug.fun(e)+ "|" ; } public test() { Log.d(TAG, DI( new Exception())); //这里就输出我们需要的debug信息了 } } |
另一种使用形式:
1 public class DebugInfo extends Exception { 2 public int line() { 3 StackTraceElement[] trace = getStackTrace(); 4 if (trace == null || trace.length == 0) { 5 return -1; 6 } 7 return trace[0].getLineNumber(); 8 } 9 10 public String fun() { 11 StackTraceElement[] trace = getStackTrace(); 12 if (trace == null || trace.length == 0) { 13 return ""; 14 } 15 return trace[0].getMethodName(); 16 } 17 18 public DebugInfo() { 19 super(); 20 } 21 22 @Override 23 public String toString() { 24 return line() + "|" + fun() + "|"; 25 } 26 }
使用方法
Log.d(TAG, new DebugInfo() + "hello world!");
1 public class DebugInfo { 2 public static int line(StackTraceElement e) { 3 return e.getLineNumber(); 4 } 5 6 public static String method(StackTraceElement e) { 7 return e.getMethodName(); 8 } 9 10 public static String info(StackTraceElement e) { 11 String ret = line(e) + "|" + method(e) + "|"; 12 return ret; 13 } 14 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 内存占用高分析
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· 在线客服系统 QPS 突破 240/秒,连接数突破 4000,日请求数接近1000万次,.NET 多
· C# 开发工具Visual Studio 介绍
· 在 Windows 10 上实现免密码 SSH 登录
· C#中如何使用异步编程