首页 > 解决方案 > 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

我怎样才能让它打印行号以及错误消息,因为我发现很难在我的代码中找到这个空对象引用字符串?

标签: android

解决方案


Log最简单的解决方案是将您的语句重写为:

Log.d("MyTag", "Exception while doing ...", e);

(在这里,您将“...”替换为有关该try块试图做什么的几句话)

这会将完整的堆栈跟踪以及您的两个字符串打印到 LogCat

绝大多数Android 开发者都走这条路,也应该走这条路。

如果出于某种原因,您真的只想获取行号,e.getStackTrace()[0].getLineNumber() 则应该拥有该信息。但是,在许多情况下,这不是 Java 文件中的行号,而是发生异常的其他 Java 文件中的行号。这就是为什么打印堆栈跟踪是更好的选择,因为您可以获得更多文件和行号。


推荐阅读