java.lang.NullPointerException: println needs a message

Problemi is in e.getMessage() what can return null and Log.e (String tag, String msg) will throws an new exception !!!!
Problem and solution:

      	try {
      		int [] i = {1};
      		int z = i[5];
      	} catch (ArrayIndexOutOfBoundsException e) {
      		String s = e.toString(); // s == java.lang.ArrayIndexOutOfBoundsException
                // try to testing String s for null value
      		if(s != null)
      		 Log.e("bla", s);
      		else 
      		 Log.e("bla", "My error text 1");
 
      		String s2 = e.getMessage(); // s2 == null !!!!!!!
                // you need to testing String s2 for null value , or you get FATAL EXCEPTION: main
                // and application will be crashed
       		String s2 = e.getMessage(); // s2 == null !!!!!!!
      		if(s2 != null)
      		 Log.e("bla2", e.getMessage());
      		else 
      		 Log.e("bla2", "My error text 2");
 
                // this is OK
      		e.printStackTrace();
      	}

LogCat:

E/bla(855): java.lang.ArrayIndexOutOfBoundsException
 
 E/bla2(855): My error text 2
 
 W/System.err(855): java.lang.ArrayIndexOutOfBoundsException
 W/System.err(855): 	at cz.okhelp.motion._MotionActivity.onTouchEvent(_MotionActivity.java:54)
 W/System.err(855): 	at android.app.Activity.dispatchTouchEvent(Activity.java:2099)
 W/System.err(855): 	at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1675)
 W/System.err(855): 	at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2194)
 W/System.err(855): 	at android.view.ViewRoot.handleMessage(ViewRoot.java:1878)
 W/System.err(855): 	at android.os.Handler.dispatchMessage(Handler.java:99)
 W/System.err(855): 	at android.os.Looper.loop(Looper.java:123)
 W/System.err(855): 	at android.app.ActivityThread.main(ActivityThread.java:3683)
 W/System.err(855): 	at java.lang.reflect.Method.invokeNative(Native Method)
 W/System.err(855): 	at java.lang.reflect.Method.invoke(Method.java:507)
 W/System.err(855): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
 W/System.err(855): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
 W/System.err(855): 	at dalvik.system.NativeStart.main(Native Method)

Or you can using this code:

      	try {
      		int [] i = {1};
      		int z = i[5];
      	} catch (Exception e) {
 
 
      		StringBuilder sb = new  StringBuilder().append(e.getClass().getSimpleName()); 
          if  (e.getMessage() != null) { 
              sb.append("\n"); 
              sb.append(e.getMessage()); 
          } 
          Log.e("err", sb.toString()); // E/err(336): ArrayIndexOutOfBoundsException
 
          // this code write out all message
          Log.e("myError", "methodName", e);
       }
// E/myError(371): methodName
// E/myError(371): java.lang.ArrayIndexOutOfBoundsException
// E/myError(371): 	at cz.okhelp.motion._MotionActivity.onTouchEvent(_MotionActivity.java:54)
// E/myError(371): 	at android.app.Activity.dispatchTouchEvent(Activity.java:2099)
// E/myError(371): 	at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1675)
// E/myError(371): 	at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2194)
// E/myError(371): 	at android.view.ViewRoot.handleMessage(ViewRoot.java:1878)
// E/myError(371): 	at android.os.Handler.dispatchMessage(Handler.java:99)
// E/myError(371): 	at android.os.Looper.loop(Looper.java:123)
// E/myError(371): 	at android.app.ActivityThread.main(ActivityThread.java:3683)
// E/myError(371): 	at java.lang.reflect.Method.invokeNative(Native Method)
// E/myError(371): 	at java.lang.reflect.Method.invoke(Method.java:507)
// E/myError(371): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
// E/myError(371): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
// E/myError(371): 	at dalvik.system.NativeStart.main(Native Method)
This entry was posted in Android Examples Code, Bugs, warnings, errors and tagged , . Bookmark the permalink.


Comments are closed.



11,642 views