diff --git a/src/fitting/ensemble-samplers/emcee.sl b/src/fitting/ensemble-samplers/emcee.sl index 1df2f69583adcd9e597545072e9fc8b59dadfea5..baaa3580ebbd73d036b83b194422108f3fd736af 100644 --- a/src/fitting/ensemble-samplers/emcee.sl +++ b/src/fitting/ensemble-samplers/emcee.sl @@ -1958,7 +1958,7 @@ private define file_exists (filename) %{{{ private define emceeSetup (ship, steps, options) %{{{ { variable leader, size, engine; - variable j, set; + variable j, set, err; engine = ship.engine; if (0 == engine.id) { @@ -1995,7 +1995,15 @@ private define emceeSetup (ship, steps, options) %{{{ throw ReadError, sprintf("File '%s' does not exist", options.output.filename); } - options.output.open(engine); + try (err) { + options.output.open(engine); + } + catch AnyError: + { + if (ship.abort != NULL) + ship.abort(); + throw err.error, err.message; % forward error, make sure we aborted + } } else { @@ -2009,7 +2017,15 @@ private define emceeSetup (ship, steps, options) %{{{ throw WriteError, sprintf("File '%s' exists.", options.output.filename); } - options.output.create(engine); + try (err) { + options.output.create(engine); + } + catch AnyError: + { + if (ship.abort != NULL) + ship.abort(); + throw err.error, err.message; % forward error + } } leader = engine.leader;