From b7b32b1002de26b489cc9fcccaffd8c89cf729a1 Mon Sep 17 00:00:00 2001 From: Solovyev_S Date: Tue, 2 Jul 2013 13:23:44 +0400 Subject: [PATCH] safe loading of calculator engine --- .../calculator/CalculatorEngineImpl.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) 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);