private Next<M, F> safeInvokeUpdate(M model, E event) { try { return actualUpdate.update(model, event); } catch (Exception e) { logger.exceptionDuringUpdate(model, event, e); throw Throwables.propagate(e); } } }
private Next<M, F> safeInvokeUpdate(M model, E event) { try { return actualUpdate.update(model, event); } catch (Exception e) { logger.exceptionDuringUpdate(model, event, e); throw Throwables.propagate(e); } } }
@Test public void delegatesExceptionDuringUpdateToAllLoggers() throws InstantiationException, IllegalAccessException { ExceptionDuringUpdate<String, Integer> testCase = ExceptionDuringUpdate.create("Something bad happened", 6, Exception.class); underTest.exceptionDuringUpdate(testCase.model(), testCase.event(), testCase.createException()); assertTestCaseLogged(testCase); }
@Override public void exceptionDuringUpdate(M model, E event, Throwable exception) { for (Logger<M, E, F> logger : loggers) { logger.exceptionDuringUpdate(model, event, exception); } } }