NullPointerException:println需要android中的消息

在我的媒体播放器中,我从SD卡播放歌曲。 它显示错误为NullPointerException:println在android中需要一个消息e。 我试了很久,但是我不知道原因。请帮助我。

码:

try { mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource("/sdcard/t1.mp3"); seek.setMax(mediaPlayer.getDuration()); mediaPlayer.prepare(); mediaPlayer.start(); mediaPlayer.setOnCompletionListener(this); } catch(Exception ex){ Log.e("sdcard-err2:",ex.getMessage()); // null pointer exception : println needs a message } 

日志猫:

  05-16 19:27:54.491: ERROR/AndroidRuntime(6889): Caused by: java.lang.NullPointerException: println needs a message 05-16 19:27:54.491: ERROR/AndroidRuntime(6889): at android.util.Log.println(Native Method) 05-16 19:27:54.491: ERROR/AndroidRuntime(6889): at android.util.Log.e(Log.java:208) 05-16 19:27:54.491: ERROR/AndroidRuntime(6889): at com.seek.bar.media3.onCreate(media3.java:43) 05-16 19:27:54.491: ERROR/AndroidRuntime(6889): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 05-16 19:27:54.491: ERROR/AndroidRuntime(6889): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 05-16 19:27:54.491: ERROR/AndroidRuntime(6889): ... 11 more 

在捕获中,使用:

 String err = (ex.getMessage()==null)?"SD Card failed":ex.getMessage(); Log.e("sdcard-err2:",err); 

对于任何获得这个的人来说,尝试用“”+ varNamereplace单独的方法调用或variables名称。

例如,

 Log.d("LOGCAT", getErrorMsg()); 

 Log.d("LOGCAT", "" + getErrorMsg()); 

也许没有什么信息附加在你正在捕捉的exception中。 试试ex.printStackTrace(); 代替。 希望这可以帮助。

另一种可以使用的方法是Log.getStackTraceString(e),例如:

 Log.e(TAG, Log.getStackTraceString(e)); 

您可以在Android文档中阅读更多。

“println需要一个消息”是一个非常混乱的消息(至less对我来说),当不使用println(...)方法!

就我而言,在这种情况下,所有导致这种types错误的情况都有一个星座,你必须注意:

 try{ ... }catch(..){ // in here there is a reference to the Logger } 

现在的问题是,在你的try{...}块中,你正在使用未初始化的引用或者一些旧的实例,它们现在指向null

在try块的开始处设置一个断点并逐步debugging你的代码,你会发现在某些时候代码将尝试访问一些null对象的方法。

在这种情况下,我倾向于责怪你的seek目标!

问候。