2016-04-24 7 views
1

私は新しいゲームを作るためにLWJGLを使用しています。lwjglゲームがクラッシュしたときにダイアログを表示する方法(java)

クイック質問:

私のゲームがクラッシュし、このようなもので:

スレッドでの例外engineTester.MainGameLoop.mainで "メイン" のjava.lang.NullPointerException (MainGameLoop.java:376 ) C:\ユーザーは古城Ofori \のAppData \ローカル\ NetBeansの\キャッシュ\ 8.1 \エグゼキュータ・スニペットを\ \ run.xml:53:Javaが返さ:1

を、私はそれがダイアログでそれを印刷してもらうにはどうすればよいですだからs omeoneはそれを実行し、それは彼らがが、それはあなたがtry ... catchを使用し、基底クラスで(例外をキャッチすることができます感覚

+1

その他のゲーム。 infoを使ってSwingダイアログを表示するだけです。私はあなたもロギングを使うべきだと思います。あなたがレビューするためにログファイルをエクスポートすると、小さなダイアログに収まる情報がもっとたくさんあります。 – markspace

答えて

1

をしたホープ

がクラッシュしたされるダイアログとしてそれを見ることができますクラッシュ/スーパークラス)、ユーザーにエラーコードを送信して、報告し、より詳細なエラーを記録することができます。お使いの設定に応じて:

... 
    try { 
     /* game is playing() */ 
    } 
    catch (MyGameException gameException) {   
     logging.log(gameException.log());   
     sendErrorCodeToTheUser(gameException);   
    } 

私はプログラマがnullポインタだった詳細なログを持つことができますが、ユーザは、エラーコード1-10または1-1000を報告できることを同僚と同様の議論がありました。

3

UncaughtHandlerを使用して、処理されず実際にゲームをクラッシュさせる例外をキャッチすることをお勧めします。使用しているLWJGLのバージョンは特定ではありませんでしたが、LWJGL 2を使用している場合は警告を表示できるSysクラスがあります。

Sys.alert(タイトル、メッセージ)

残念ながらLWJGL 3は、このクラスを削除し、GLFWは、この時点でメッセージボックスの作成をサポートしていないようです。

セットUncaughtHandler(Mainメソッドの最初の行)

Thread.setDefaultUncaughtExceptionHandler(UncaughtHandler.instance); 

マイUncaughtHandlerクラス:OGLが働いていないときにLWJGL利用スイングを使用

public class UncaughtHandler implements Thread.UncaughtExceptionHandler{ 
    public static UncaughtHandler instance = new UncaughtHandler(); 

    @Override 
    public void uncaughtException(Thread t, Throwable e) { 
     Sys.alert("Uncaught Exception!", e.getMessage()); 
    } 
} 
関連する問題