diff --git a/core/src/main/java/org/solovyev/android/calculator/CalculatorEngineImpl.java b/core/src/main/java/org/solovyev/android/calculator/CalculatorEngineImpl.java index 120da439..ae38b995 100644 --- a/core/src/main/java/org/solovyev/android/calculator/CalculatorEngineImpl.java +++ b/core/src/main/java/org/solovyev/android/calculator/CalculatorEngineImpl.java @@ -179,13 +179,26 @@ public class CalculatorEngineImpl implements CalculatorEngine { @Override public void reset() { synchronized (lock) { - varsRegistry.load(); - functionsRegistry.load(); - operatorsRegistry.load(); - postfixFunctionsRegistry.load(); + safeLoadRegistry(varsRegistry); + safeLoadRegistry(functionsRegistry); + safeLoadRegistry(operatorsRegistry); + safeLoadRegistry(postfixFunctionsRegistry); } } + private void safeLoadRegistry(@Nonnull CalculatorMathRegistry registry) { + try { + registry.load(); + } catch (Exception e) { + logException(e); + } + } + + private void logException(@Nonnull Exception e) { + final CalculatorLogger logger = Locator.getInstance().getLogger(); + logger.error("Engine", e.getMessage(), e); + } + @Override public void softReset() { Locator.getInstance().getCalculator().fireCalculatorEvent(CalculatorEventType.engine_preferences_changed, null);