From 2365ae2cb4cdb3b68d06f1fc67f7e25ba222eb51 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Sun, 7 May 2023 22:51:41 +0200 Subject: [PATCH] [#2203] Handle SimulationException separately --- core/resources/l10n/messages.properties | 2 +- .../simulation/BasicEventSimulationEngine.java | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index 615319afe..4e03dcac9 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -619,7 +619,7 @@ SimuRunDlg.msg.branchErrorOccurred = An error occurred during simulation branch BasicEventSimulationEngine.error.noMotorsDefined = No motors defined in the simulation. BasicEventSimulationEngine.error.activeLengthZero = Active airframe has length 0 BasicEventSimulationEngine.error.cantCalculateStability = Can't calculate stability -BasicEventSimulationEngine.error.earlyMotorBurnout = Motor burnout without liftoff. +BasicEventSimulationEngine.error.earlyMotorBurnout = Motor burnout without liftoff.
Use more (powerful) motors, or decrease the rocket mass. BasicEventSimulationEngine.error.noConfiguredIgnition = No motors configured to ignite at liftoff BasicEventSimulationEngine.error.noIgnition = No motors ignited. BasicEventSimulationEngine.error.NaNResult = Simulation resulted in not-a-number (NaN) value, please report a bug. diff --git a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java index 827771438..ffdb3c2fa 100644 --- a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java +++ b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java @@ -100,8 +100,8 @@ public class BasicEventSimulationEngine implements SimulationEngine { toSimulate.push(currentStatus); SimulationListenerHelper.fireStartSimulation(currentStatus); - do{ - if( null == toSimulate.peek()){ + do { + if (toSimulate.peek() == null) { break; } currentStatus = toSimulate.pop(); @@ -121,7 +121,7 @@ public class BasicEventSimulationEngine implements SimulationEngine { if (dataBranch.getLength() == 0) { flightData.getWarningSet().add(Warning.EMPTY_BRANCH, dataBranch.getBranchName()); } - }while( ! toSimulate.isEmpty()); + } while (!toSimulate.isEmpty()); SimulationListenerHelper.fireEndSimulation(currentStatus, null); @@ -707,7 +707,7 @@ public class BasicEventSimulationEngine implements SimulationEngine { } } - private FlightData computeCoastTime() { + private FlightData computeCoastTime() throws SimulationException { try { SimulationConditions conds = currentStatus.getSimulationConditions().clone(); conds.getSimulationListenerList().add(OptimumCoastListener.INSTANCE); @@ -715,6 +715,8 @@ public class BasicEventSimulationEngine implements SimulationEngine { FlightData d = e.simulate(conds); return d; + } catch (SimulationException e) { + throw e; } catch (Exception e) { log.warn("Exception computing coast time: ", e); return null;