我正在使用LWJGL制作我的新游戏。
快速提问:
当我的游戏崩溃时,像这样:
线程"main"中的异常java. lang.NullPointerException在引擎测试.MainGameLoop.main(MainGameLoop.java:376)C:\用户\用户\AppData\本地\NetBeans\Cache\8.1\执行器片段\run.xml:53:Java返回:1
我如何让它在对话框中打印它,以便当有人运行它并崩溃时,他们将能够将其视为已崩溃的对话框
希望有意义
我建议使用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());
}
}
您可以使用try
…catch
并捕获异常(在baseclass/超类中),向用户发送错误代码,他可以报告并记录更详细的错误。根据您的配置:
...
try {
/* game is playing() */
}
catch (MyGameException gameException) {
logging.log(gameException.log());
sendErrorCodeToTheUser(gameException);
}
我与一位同事进行了类似的讨论,用户可以报告错误代码1-10或1-1000,而程序员可以拥有空指针所在的详细日志。
如果您使用的是lwjgl3,那么您应该使用TinyFileDialgs绑定
尽量避免挥杆