From 54ed61bfe620341cdcf316b45539efdeabf19039 Mon Sep 17 00:00:00 2001 From: crschnick Date: Fri, 31 Oct 2025 23:05:22 +0000 Subject: [PATCH] Improve init error handling --- .../xpipe/app/core/mode/AppOperationMode.java | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/core/mode/AppOperationMode.java b/app/src/main/java/io/xpipe/app/core/mode/AppOperationMode.java index 1abc2e4e5..2171ddd65 100644 --- a/app/src/main/java/io/xpipe/app/core/mode/AppOperationMode.java +++ b/app/src/main/java/io/xpipe/app/core/mode/AppOperationMode.java @@ -161,28 +161,31 @@ public abstract class AppOperationMode { return XPipeDaemonMode.GUI; } - @SneakyThrows public static void init(String[] args) { inStartup = true; setup(args); - if (AppProperties.get().isAotTrainMode()) { - AppOperationMode.switchToSyncOrThrow(BACKGROUND); - inStartup = false; - AppAotTrain.runTrainingMode(); - AppOperationMode.shutdown(false); - return; - } + try { + if (AppProperties.get().isAotTrainMode()) { + AppOperationMode.switchToSyncOrThrow(BACKGROUND); + inStartup = false; + AppAotTrain.runTrainingMode(); + AppOperationMode.shutdown(false); + return; + } - var startupMode = getStartupMode(); - switchToSyncOrThrow(map(startupMode)); - // If it doesn't find time, the JVM will not gc the startup workload - System.gc(); - inStartup = false; - AppOpenArguments.init(); - ThreadHelper.runAsync(() -> { - DataStorage.get().generateCaches(); - }); + var startupMode = getStartupMode(); + switchToSyncOrThrow(map(startupMode)); + // If it doesn't find time, the JVM will not gc the startup workload + System.gc(); + inStartup = false; + AppOpenArguments.init(); + ThreadHelper.runAsync(() -> { + DataStorage.get().generateCaches(); + }); + } catch (Throwable ex) { + ErrorEventFactory.fromThrowable(ex).term().handle(); + } } public static void switchToAsync(AppOperationMode newMode) {