我確定在這裏閱讀了try catch性能的其他帖子,但我不確定如果在我的觀點中使用它,那很好。
我正在使用它在我的gameLoop的某些點上。
起初。我正在使用libgdx的Stage and Actor
系統。但是當我改變地圖清除舞臺時,它有時會在舞臺上拍攝NullPointerException
。是一個可以在mapchange場景中使用的try catch
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)
因此,我添加了一個簡單的嘗試抓住,因爲我不能以任何其他方式處理它。我嘗試了一個狀態,並在改變地圖,清除舞臺和添加新怪物的同時將狀態改爲別的東西。但它實際上做了同樣的錯誤。在嘗試捕捉看起來是這樣的:
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字段發生衝突,則該字符將調用更改Map方法。在那種情況下,我確實拯救了我的老怪物,並清除了迭代過程使我的所有演員變得更加強壯的舞臺。儘管渲染試圖採取行動是不可能的。我真的沒有得到它...... Id發佈,但它有點「更多」 – BennX 2013-04-29 19:08:43
看看Group.java,第48行。該行預計要填寫一些值。在那裏找到值,然後找到該地點在你的代碼中它應該被填充(更少見的是,你已經正確地填寫了這個值,並且這個錯誤在庫中,但是不要把它作爲你的第一個猜測) – 2013-04-29 19:12:08
我在你引用的庫中探索過, NOBODY技巧在這裏不適合你,但要記住未來。 – 2013-04-29 19:12:55