2016-09-10 57 views
0

我得到一個錯誤顯示java.lang.NullPointerException:需要的println使用下面的代碼Log.d不會打印出消息

for (Application app : mApplications) { 
      Log.d("LOG", "********"); 
      Log.d("LOG", app.getName()); 
      Log.d("LOG", app.getArtist()); 
      Log.d("LOG", app.getReleaseDate()); 

     } 

但在第二個參數日誌語句時,一個消息,如果我在引號之間添加另一個字符串,錯誤消失

for(Application app: mApplications){ 
      Log.d("LOG", "******************"); 
      Log.d("LOG","Name: " +app.getName()); 
      Log.d("LOG","Artist: " +app.getArtist()); 
      Log.d("LOG","ReleaseDate: " +app.getReleaseDate()); 

     } 

兩者之間有什麼區別?

+1

日誌信息不能爲空..可能是應用程序空結賬? –

回答

0

首先,如果你正在使用Log.d它一般用於調試,這是Log.d d(String tag, String msg, Throwable tr)正確的語法爲了更好地理解See this

在你的情況首先您要使用此

for (Application app : mApplications) { 
     Log.d("LOG", "********"); 
     Log.d("LOG", app.getName()); 
     Log.d("LOG", app.getArtist()); 
     Log.d("LOG", app.getReleaseDate()); 

    } 

並生成此錯誤java.lang.NullPointerException: println needs a message,因爲您不能根據Log.d語法規則放置消息。

我希望你明白...

+0

添加一個Throwable不是更常用的方法 –

+0

我知道但是錯誤應該是java.lang.NullPointerException:println需要一條消息所以 –

+0

即使使用Throwable,我也相信你仍然不能有空消息。 –

1

不同之處在於你已經連接了一個字符串和一個null變量。

Log需要一個非空的消息字符串。

另外,這也適用,因爲它會打印"null"但它看起來並不乾淨

Log.d("LOG", String.valueOf(app.getName())); 
Log.d("LOG", String.valueOf(app.getArtist())); 
Log.d("LOG", String.valueOf(app.getReleaseDate()));