我正在使用LWJGL制作我的新游戏。
快速提问:
当我的游戏崩溃时:
线程“main”java.lang.NullPointerException中的异常 在engineTester.MainGameLoop.main(MainGameLoop.java:376) C:\ Users \ Kojo Ofori \ AppData \ Local \ NetBeans \ Cache \ 8.1 \ executor-snippets \ run.xml:53:Java返回:1
如何让它在对话框中打印出来,这样当有人运行它并崩溃时,他们就能看到它已经崩溃的对话框
希望它有意义
答案 0 :(得分:3)
我建议使用UncaughtHandler来捕获任何未处理的异常并实际导致游戏崩溃。您没有具体说明您使用的是哪个版本的LWJGL,但如果您使用的是LWJGL 2,则它有一个允许您显示警报的Sys类。
Sys.alert(标题,消息)
不幸的是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());
}
}
答案 1 :(得分:1)
您可以使用try
... catch
并捕获异常(在基类/超类中),向用户发送他可以报告的错误代码并记录更详细的错误。根据您的配置:
...
try {
/* game is playing() */
}
catch (MyGameException gameException) {
logging.log(gameException.log());
sendErrorCodeToTheUser(gameException);
}
我与一位同事进行过类似的讨论,用户可以报告错误代码1-10或1-1000,而程序员可以在其中找到null指针所在的详细日志。
答案 2 :(得分:0)
如果您使用的是lwjgl3,则应使用TinyFileDialogs binding
请尽可能避免摆动