在我的媒体播放器中我从sdcard播放一首歌。它显示错误为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
}
Log cat:
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
答案 0 :(得分:66)
对于其他任何人来说,尝试用“+ + varName”替换单独的方法调用或变量名。
例如,
Log.d("LOGCAT", getErrorMsg());
变为
Log.d("LOGCAT", "" + getErrorMsg());
答案 1 :(得分:56)
在捕获中,使用:
String err = (ex.getMessage()==null)?"SD Card failed":ex.getMessage();
Log.e("sdcard-err2:",err);
答案 2 :(得分:11)
也许在您捕获的异常中没有附加消息。试试ex.printStackTrace();
代替。希望这会有所帮助。
答案 3 :(得分:5)
可以使用的另一种方法是使用Log.getStackTraceString(e),例如:
Log.e(TAG, Log.getStackTraceString(e));
中详细了解相关内容
答案 4 :(得分:3)
“println需要一个megssage”是一个非常令人困惑的消息(至少对我而言)完全不使用println(...)
方法!!!
就我而言,在所有产生此类错误的情况下都有一个你需要注意的星座:
try{
...
}catch(..){
// in here there is a reference to the Logger
}
现在的问题是,在您的try{...}
数据块中,您使用的是未初始化的引用或现在指向null
的旧实例
在try块的最开始设置一个断点并逐步调试你的代码,你会发现在某些时候代码会尝试访问一些null的对象的方法。
在这种情况下,我倾向于责备你的 seek
对象!
问候。