Games Crashlytics: How to avoid a java.lang.NullPointerException?

Gunther

Active Member
Licensed User
Hello,

Firebase' Crashlytics reports very seldom a NullPointerException in the getWorldCenter of the X2 library.

The code in the Game_Tick Event is extremly unspectacular:
B4X:
...
Dim v As B2Vec2 = Ball1.Body.WorldCenter.CreateCopy
X2.UpdateWorldCenter(v)
...
How does one can avoid (= test before) if a bad vector v is given to that sub?
A simple "Try ... Catch ... End Try"-Structure will not help since the structure is basically correct.

Here the CrashReport:
B4X:
Caused by java.lang.NullPointerException
       at anywheresoftware.b4a.objects.B2Body.getWorldCenter(B2Body.java:46)
       at twinnypoints.gg.goilsoft.de.game._tick(game.java:3162)
       at twinnypoints.gg.goilsoft.de.x2utils$ResumableSub_MainLoop.resume(x2utils.java:856)
       at anywheresoftware.b4a.keywords.Common$13.run(Common.java:1690)
       at android.os.Handler.handleCallback(Handler.java:733)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:136)
       at android.app.ActivityThread.main(ActivityThread.java:5590)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
       at dalvik.system.NativeStart.main(NativeStart.java)
 
Last edited:

Gunther

Active Member
Licensed User
Not sure if this is valid enough in all cases?
B4X:
If  v <> Null Then X2.UpdateWorldCenter(v.CreateCopy)
 
Last edited:

Gunther

Active Member
Licensed User
I will give it a try with:
B4X:
If Ball1.Body.IsInitialized Then
    Dim v As B2Vec2 = Ball1.Body.WorldCenter.CreateCopy
    X2.UpdateWorldCenter(v)
Else
    Starter.CL.CLog("Something unexpected happened...")
End If
 

Gunther

Active Member
Licensed User
Well, up to now no additional crash reports due to this.

Only some 'Out of Memory'-Errors in the 'b4a.example.bitmapcreator._initialize' on older devices with Android 4.4.4 running.
 
Top