From 749936ec7bd92444fb6f08460e8434b32e98a07b Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Sat, 25 Nov 2023 16:19:30 +0100 Subject: [PATCH] profile loader: properly crash when error occurs --- .../config/profile/manager/ProfileManagers.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/bixilon/minosoft/config/profile/manager/ProfileManagers.kt b/src/main/java/de/bixilon/minosoft/config/profile/manager/ProfileManagers.kt index 620e6bf6c..d041c3fb9 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/manager/ProfileManagers.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/manager/ProfileManagers.kt @@ -33,6 +33,7 @@ import de.bixilon.minosoft.config.profile.profiles.resources.ResourcesProfileMan import de.bixilon.minosoft.config.profile.storage.ProfileIOManager import de.bixilon.minosoft.config.profile.storage.StorageProfileManager import de.bixilon.minosoft.data.registries.factory.DefaultFactory +import de.bixilon.minosoft.gui.eros.crash.ErosCrashReport.Companion.crash import de.bixilon.minosoft.terminal.RunConfiguration import java.nio.file.Files @@ -77,10 +78,22 @@ object ProfileManagers : DefaultFactory>( FileWatcherService.start() // TODO: kutil 1.25: remove kutil race condition } val worker = UnconditionalWorker() + var first: Throwable? = null for (manager in ProfileManagers) { - worker += { manager.load() } + worker += { + try { + manager.load() + } catch (error: Throwable) { + error.printStackTrace() + if (first == null) { + first = error + } + } + } } worker.work(latch) + first?.let { it.crash(); throw it } + ProfileIOManager.init() // runLater(5000) {