diff --git a/gradle.properties b/gradle.properties index f5486e92..3123e775 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,4 +7,4 @@ typingLabelVersion = 1.3.0 shapedrawerVersion = 2.5.0 talosVersion = 1.5.0-SNAPSHOT gdxTinyVGVersion=7a8927633e -pureMvcVersion=1.0.2 \ No newline at end of file +pureMvcVersion=1.0.3-SNAPSHOT \ No newline at end of file diff --git a/src/main/java/games/rednblack/editor/CustomExceptionHandler.java b/src/main/java/games/rednblack/editor/CustomExceptionHandler.java index f5665a4e..9c6666a5 100644 --- a/src/main/java/games/rednblack/editor/CustomExceptionHandler.java +++ b/src/main/java/games/rednblack/editor/CustomExceptionHandler.java @@ -27,10 +27,20 @@ public class CustomExceptionHandler implements UncaughtExceptionHandler { writeToFile(stacktrace); printWriter.close(); - showErrorDialog(stacktrace); + showErrorDialog(t, stacktrace); } - public static void showErrorDialog(String stacktrace) { + public static void showErrorDialog(Throwable e) { + final Writer result = new StringWriter(); + final PrintWriter printWriter = new PrintWriter(result); + e.printStackTrace(printWriter); + e.printStackTrace(); + String stacktrace = result.toString(); + + showErrorDialog(null, stacktrace); + } + + public static void showErrorDialog(Thread t, String stacktrace) { File localPath = new File(HyperLap2DUtils.getRootPath() + File.separator + "crash" + File.separator + "java-hyperlog.txt"); stacktrace = stacktrace.replace("<", ""); @@ -44,7 +54,8 @@ public class CustomExceptionHandler implements UncaughtExceptionHandler { + "\n\n System: " + SystemUtils.OS_NAME + " " + SystemUtils.OS_VERSION + " (HyperLap2D v" + AppConfig.getInstance().versionString + ")" + "\n\n" + stacktrace, "ok", "error", true); - System.exit(-1); + if (t != null) + System.exit(-1); } private void writeToFile(String stacktrace) { diff --git a/src/main/java/games/rednblack/editor/FacadeExceptionHandler.java b/src/main/java/games/rednblack/editor/FacadeExceptionHandler.java new file mode 100644 index 00000000..813ae288 --- /dev/null +++ b/src/main/java/games/rednblack/editor/FacadeExceptionHandler.java @@ -0,0 +1,18 @@ +package games.rednblack.editor; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.io.Writer; + +public class FacadeExceptionHandler implements Thread.UncaughtExceptionHandler { + + @Override + public void uncaughtException(Thread t, Throwable e) { + final Writer result = new StringWriter(); + final PrintWriter printWriter = new PrintWriter(result); + e.printStackTrace(printWriter); + String stacktrace = result.toString(); + + CustomExceptionHandler.showErrorDialog(null, stacktrace); + } +} diff --git a/src/main/java/games/rednblack/editor/Main.java b/src/main/java/games/rednblack/editor/Main.java index eee98256..b86239d6 100644 --- a/src/main/java/games/rednblack/editor/Main.java +++ b/src/main/java/games/rednblack/editor/Main.java @@ -28,6 +28,7 @@ public class Main { } Thread.currentThread().setUncaughtExceptionHandler(new CustomExceptionHandler()); + Facade.getInstance().setUncaughtExceptionHandler(new FacadeExceptionHandler()); //Increase default lwjgl stack size System.setProperty("org.lwjgl.system.stackSize", "256"); diff --git a/src/main/java/games/rednblack/editor/proxy/SettingsManager.java b/src/main/java/games/rednblack/editor/proxy/SettingsManager.java index 3c8958ac..eb4399f4 100644 --- a/src/main/java/games/rednblack/editor/proxy/SettingsManager.java +++ b/src/main/java/games/rednblack/editor/proxy/SettingsManager.java @@ -58,7 +58,7 @@ public class SettingsManager extends Proxy { e.printStackTrace(printWriter); e.printStackTrace(); String stacktrace = result.toString(); - CustomExceptionHandler.showErrorDialog(stacktrace); + CustomExceptionHandler.showErrorDialog(null, stacktrace); } }