@Override public void process(final T obj) { try { getReceiver().process(obj); } catch(final Exception e) { LOG.error("{}'{}' while processing object: {}", logPrefix, e.getMessage(), obj); if (logStackTrace) { final StringWriter stackTraceWriter = new StringWriter(); e.printStackTrace(new PrintWriter(stackTraceWriter)); LOG.error("{}Stack Trace:\n{}", logPrefix, stackTraceWriter.toString()); } } }
@Before public void setup() { MockitoAnnotations.initMocks(this); doThrow(new TestException("Exception Message")) .when(exceptionThrowingModule).process(anyString()); exceptionCatcher = new ObjectExceptionCatcher<>(); exceptionCatcher.setReceiver(exceptionThrowingModule); }
@Test public void shouldCatchException() { exceptionCatcher.process("data"); // Test passed if no exception is thrown by ObjectReceiver#process(T) }