android - Android Log.d 打印行号
问题描述
我在 try/catch 语句中捕获了以下代码:
catch (Exception e){
Log.d("MyTag", "exception ->: "+e.toString());
}
它打印:
MyTag: exception ->: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
我怎样才能让它打印行号以及错误消息,因为我发现很难在我的代码中找到这个空对象引用字符串?
解决方案
Log
最简单的解决方案是将您的语句重写为:
Log.d("MyTag", "Exception while doing ...", e);
(在这里,您将“...”替换为有关该try
块试图做什么的几句话)
这会将完整的堆栈跟踪以及您的两个字符串打印到 LogCat。
绝大多数Android 开发者都走这条路,也应该走这条路。
如果出于某种原因,您真的只想获取行号,e.getStackTrace()[0].getLineNumber()
则应该拥有该信息。但是,在许多情况下,这不是 Java 文件中的行号,而是发生异常的其他 Java 文件中的行号。这就是为什么打印堆栈跟踪是更好的选择,因为您可以获得更多文件和行号。
推荐阅读
- mysql - WordPress MySQL 查询优化
- javascript - 重定向到另一个页面后有没有办法保持登录状态?
- rebus - Rebus Saga:当订阅者发送给发布者时,消息没有以正确的顺序到达
- couchdb - 如何从 couchDb 选择器的数组中选择一个嵌套元素?
- java - Java 8 的 Cipher.getInstance 慢
- html - 使用 Chrome 打印时,HTML 主题边框部分显示在上一页上
- python - 为什么保存后加载的泡菜与原始对象不同?
- sql - 在触发器中删除之前需要更新记录
- c# - 处置 IBM MQ 对象 (IBM XMS) 会显式调用这些对象上的“关闭”吗?
- c# - 无法使用 Oracle.ManagedDataAccess 和 Windows 本机身份验证连接到数据库