diff --git a/src/main/java/org/cobbzilla/util/daemon/ZillaRuntime.java b/src/main/java/org/cobbzilla/util/daemon/ZillaRuntime.java index 830aad2..252a9ea 100644 --- a/src/main/java/org/cobbzilla/util/daemon/ZillaRuntime.java +++ b/src/main/java/org/cobbzilla/util/daemon/ZillaRuntime.java @@ -68,7 +68,9 @@ public class ZillaRuntime { public interface ExceptionRunnable { void handle(Exception e); } - public static final ExceptionRunnable DEFAULT_EX_RUNNABLE = e -> log.error("Error: " + e); + public static final ExceptionRunnable DEFAULT_EX_RUNNABLE = e -> { + log.error("Error: " + e); + }; public static ExceptionRunnable exceptionRunnable (Class[] fatalExceptionClasses) { return e -> { diff --git a/src/main/java/org/cobbzilla/util/main/BaseMain.java b/src/main/java/org/cobbzilla/util/main/BaseMain.java index b8958b0..3a160d8 100644 --- a/src/main/java/org/cobbzilla/util/main/BaseMain.java +++ b/src/main/java/org/cobbzilla/util/main/BaseMain.java @@ -24,8 +24,16 @@ public abstract class BaseMain { public void runOrDie () { try { run(); } catch (Exception e) { die("runOrDie: "+e, e); } } + public void runOrDie (ZillaRuntime.ExceptionRunnable errorHandler) { + try { run(); } catch (Exception e) { errorHandler.handle(e); } + } + public Thread runInBackground () { return background(this::runOrDie); } + public Thread runInBackground (ZillaRuntime.ExceptionRunnable errorHandler) { + return background(() -> runOrDie(errorHandler)); + } + @Getter private String[] args; public void setArgs(String[] args) throws CmdLineException { this.args = args;