提问者:小点点

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


我正在使用LWJGL制作我的新游戏。

快速提问:

当我的游戏崩溃时,像这样:

线程"main"中的异常java. lang.NullPointerException在引擎测试.MainGameLoop.main(MainGameLoop.java:376)C:\用户\用户\AppData\本地\NetBeans\Cache\8.1\执行器片段\run.xml:53:Java返回:1

我如何让它在对话框中打印它,以便当有人运行它并崩溃时,他们将能够将其视为已崩溃的对话框

希望有意义


共3个答案

匿名用户

我建议使用UncaughtHandler来捕获任何未处理并实际导致游戏崩溃的异常。你没有具体说明你使用的是哪个版本的LWJGL,但是如果你使用的是LWJGL 2,它有一个系统类,可以让你显示警报。

sys.警报(标题、消息)

不幸的是,LWJGL 3删除了这个类,并且GLFW目前似乎不支持创建消息框。

设置UncaughtHandler(Main方法中的第一行)

Thread.setDefaultUncaughtExceptionHandler(UncaughtHandler.instance);

我的UncaughtHandler类:

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

匿名用户

您可以使用trycatch并捕获异常(在baseclass/超类中),向用户发送错误代码,他可以报告并记录更详细的错误。根据您的配置:

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

我与一位同事进行了类似的讨论,用户可以报告错误代码1-10或1-1000,而程序员可以拥有空指针所在的详细日志。

匿名用户

如果您使用的是lwjgl3,那么您应该使用TinyFileDialgs绑定

尽量避免挥杆