如何在lwjgl游戏崩溃时显示对话框(java)

问题描述:

我正在使用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

您可以使用try ... catch和捕获异常(在基类的对话/ superclass),向用户发送一个他可以报告的错误代码并记录更详细的错误。根据您的配置:

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

我有一个同事,一个用户可以报告错误代码1-10或1-1000而程序员可以有一个详细的日志,其中空指针是一个类似的讨论。

我建议使用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()); 
    } 
}