我确实在这里阅读了 try catch 性能的其他帖子,但我不确定如果我在我的观点中使用它是否可以。
我在我的游戏循环中使用它。
首先。我正在使用 libgdxStage and Actor
系统。但是当我改变地图清除舞台时,它有时会NullPointerException
在舞台上摔倒。
Exception in thread "LWJGL Application" java.lang.NullPointerException
at com.badlogic.gdx.scenes.scene2d.Group.act(Group.java:48)
at com.badlogic.gdx.scenes.scene2d.Stage.act(Stage.java:202)
at com.badlogic.gdx.scenes.scene2d.Stage.act(Stage.java:166)
at com.portaaenigma.screens.GameScreen.render(GameScreen.java:91)
at com.badlogic.gdx.Game.render(Game.java:46)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:202)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:110)
所以我添加了一个简单的尝试捕获,因为我无法以任何其他方式处理它。我尝试了一个状态,并在更改地图并清除舞台并添加新怪物时将状态更改为其他状态。但它实际上犯了同样的错误。try catch 看起来像这样:
if (this.status == GameStatus.GAME) {
try {
this.figureStage.act(); // figures act <-- this is line 91
} catch (NullPointerException e) {
// catching nullpointer at mapchange
Gdx.app.log(this.getClass().getSimpleName(),
"Nullpointer catched at mapswitch: " + e.getMessage());
}
}
如果这没问题,我有点困惑,因为我或多或少看起来像是一个“修复它”的解决方案。它确实可以正常工作。当然,当我更改地图时,它有时会抛出,但我不明白为什么。
我还需要在我的怪物的查找方法中添加一个 try catch。如果我进入mapchange,而它在我对怪物的碰撞检测中确实超出了界限。
好的,一般问题是,如果这是一个可以接受的解决方案,还是应该有更好的解决方案?