2016-04-24 101 views
1

我正在使用LWJGL來創建我的新遊戲。如何在lwjgl遊戲崩潰時顯示對話框(java)

快速的問題:

當我的遊戲崩潰像這樣的東西:

異常在engineTester.MainGameLoop.main線程 「主」 顯示java.lang.NullPointerException (MainGameLoop.java:376 ) C:\用戶\科喬奧弗裏\應用程序數據\本地\ NetBeans的\緩存\ 8.1 \執行-片段\ run.xml:53:Java的返回:1

我如何得到它打印對話框所以當s omeone運行它,它崩潰,他們將能夠把它看作是已經崩潰

希望這是有道理

+1

其他遊戲。只需顯示一個帶有信息的Swing對話框。我認爲你也應該使用日誌記錄;導出日誌文件供您查看將有更多的信息,您可以將其放在小對話框中。 – markspace

回答

1

您可以使用try ... catch和捕獲異常(在基類的對話/ superclass),向用戶發送一個他可以報告的錯誤代碼並記錄更詳細的錯誤。根據您的配置:

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

我有一個同事,一個用戶可以報告錯誤代碼1-10或1-1000而程序員可以有一個詳細的日誌,其中空指針是一個類似的討論。

3

我建議使用UncaughtHandler來捕捉任何未處理的異常,並且實際上會使遊戲崩潰。你並沒有具體說明你正在使用哪種版本的LWJGL,但是如果你使用的是LWJGL 2,它有一個可以讓你顯示警報的Sys類。

Sys.alert(標題,消息)

不幸LWJGL 3中刪除這個類和GLFW似乎不支持在這個時候創建​​消息框。

集UncaughtHandler(在Main方法的第一行)

Thread.setDefaultUncaughtExceptionHandler(UncaughtHandler.instance); 

我UncaughtHandler類:使用LWJGL使用Swing時OGL不工作

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()); 
    } 
}