Skip to content

Commit 117036d

Browse files
Merge pull request #100 from JaidenAshmore/issue/97_remove_throwable_catching
refs #97: Remove usages of catch Throwable
2 parents f6bd8ff + 0dae9e5 commit 117036d

File tree

6 files changed

+28
-24
lines changed

6 files changed

+28
-24
lines changed

java-dynamic-sqs-listener-core/src/main/java/com/jashmore/sqs/argument/DelegatingArgumentResolverService.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,13 @@ public Object resolveArgument(final QueueProperties queueProperties, final Metho
2323
.map(resolver -> {
2424
try {
2525
return resolver.resolveArgumentForParameter(queueProperties, methodParameter, message);
26-
} catch (final Throwable throwable) {
27-
if (ArgumentResolutionException.class.isAssignableFrom(throwable.getClass())) {
28-
throw throwable;
26+
} catch (final RuntimeException runtimeException) {
27+
// Make sure to wrap any unintended exceptions with the expected exception for errors
28+
if (!ArgumentResolutionException.class.isAssignableFrom(runtimeException.getClass())) {
29+
throw new ArgumentResolutionException("Error obtaining an argument value for parameter", runtimeException);
2930
}
3031

31-
throw new ArgumentResolutionException("Error obtaining an argument value for parameter", throwable);
32+
throw runtimeException;
3233
}
3334
})
3435
.findFirst()

java-dynamic-sqs-listener-core/src/main/java/com/jashmore/sqs/broker/concurrent/ConcurrentMessageBroker.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ public void run() {
9090
try {
9191
shutdownConcurrentThreads(concurrentThreadsExecutor, messageProcessingThreadsExecutor);
9292
log.debug("Message controller shut down");
93-
} catch (final Throwable throwable) {
94-
log.error("Exception thrown while waiting for broker to shutdown", throwable);
93+
} catch (final RuntimeException runtimeException) {
94+
log.error("Exception thrown while waiting for broker to shutdown", runtimeException);
9595
}
9696
}
9797

java-dynamic-sqs-listener-core/src/main/java/com/jashmore/sqs/processor/DefaultMessageProcessor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import lombok.AllArgsConstructor;
1111
import software.amazon.awssdk.services.sqs.model.Message;
1212

13+
import java.lang.reflect.InvocationTargetException;
1314
import java.lang.reflect.Method;
1415
import java.lang.reflect.Parameter;
1516
import java.util.Arrays;
@@ -39,8 +40,8 @@ public void processMessage(final Message message) throws MessageProcessingExcept
3940
final Object result;
4041
try {
4142
result = messageConsumerMethod.invoke(messageConsumerBean, arguments);
42-
} catch (final Throwable throwable) {
43-
throw new MessageProcessingException("Error processing message", throwable);
43+
} catch (final InvocationTargetException | IllegalAccessException | RuntimeException exception) {
44+
throw new MessageProcessingException("Error processing message", exception);
4445
}
4546

4647
if (hasAcknowledgeParameter()) {

java-dynamic-sqs-listener-core/src/main/java/com/jashmore/sqs/processor/retryable/RetryableMessageProcessor.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,18 @@ public void processMessage(final Message message) throws MessageProcessingExcept
3535
private void processMessageWithRetries(final Message message, final int retryAttempts) throws MessageProcessingException {
3636
try {
3737
delegateMessageProcessor.processMessage(message);
38-
} catch (final Throwable throwable) {
39-
if (retryAttempts > 0) {
40-
log.error("Error processing message. Trying " + retryAttempts + " more times", throwable);
41-
try {
42-
backoff();
43-
} catch (final InterruptedException exception) {
44-
throw new MessageProcessingException("Interrupted while processing message", exception);
45-
}
46-
processMessageWithRetries(message, retryAttempts - 1);
47-
} else {
48-
throw throwable;
38+
} catch (final RuntimeException runtimeException) {
39+
if (retryAttempts <= 0) {
40+
throw runtimeException;
4941
}
42+
43+
log.error("Error processing message. Trying " + retryAttempts + " more times", runtimeException);
44+
try {
45+
backoff();
46+
} catch (final InterruptedException exception) {
47+
throw new MessageProcessingException("Interrupted while processing message", exception);
48+
}
49+
processMessageWithRetries(message, retryAttempts - 1);
5050
}
5151
}
5252

java-dynamic-sqs-listener-core/src/main/java/com/jashmore/sqs/retriever/batching/BatchingMessageRetriever.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import software.amazon.awssdk.services.sqs.model.ReceiveMessageResponse;
2121

2222
import java.util.concurrent.BlockingQueue;
23+
import java.util.concurrent.ExecutionException;
2324
import java.util.concurrent.LinkedBlockingQueue;
2425
import java.util.concurrent.atomic.AtomicInteger;
2526

@@ -132,6 +133,7 @@ public void run() {
132133
log.debug("Thread interrupted while obtaining messages from SQS");
133134
break;
134135
}
136+
135137
try {
136138
for (final Message message : response.messages()) {
137139
messagesDownloaded.put(message);
@@ -140,11 +142,10 @@ public void run() {
140142
log.debug("Thread interrupted while placing messages on internal queue");
141143
break;
142144
}
143-
} catch (final Throwable throwable) {
144-
log.error("Error thrown trying to obtain messages", throwable);
145+
} catch (final ExecutionException | RuntimeException exception) {
145146
try {
146147
final long errorBackoffTimeInMilliseconds = getErrorBackoffTimeInMilliseconds();
147-
log.error("Error thrown while organising threads to process messages. Backing off for {}ms", errorBackoffTimeInMilliseconds, throwable);
148+
log.error("Error thrown while organising threads to process messages. Backing off for {}ms", errorBackoffTimeInMilliseconds, exception);
148149
backoff(errorBackoffTimeInMilliseconds);
149150
} catch (final InterruptedException interruptedException) {
150151
log.debug("Thread interrupted during backoff period");

java-dynamic-sqs-listener-core/src/main/java/com/jashmore/sqs/retriever/prefetch/PrefetchingMessageRetriever.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.util.concurrent.BlockingDeque;
2020
import java.util.concurrent.BlockingQueue;
21+
import java.util.concurrent.ExecutionException;
2122
import java.util.concurrent.LinkedBlockingQueue;
2223
import java.util.concurrent.SynchronousQueue;
2324

@@ -131,8 +132,8 @@ public void run() {
131132
log.debug("Thread interrupted while placing messages onto queue. Exiting...");
132133
break;
133134
}
134-
} catch (final Throwable throwable) {
135-
log.error("Exception thrown when retrieving messages", throwable);
135+
} catch (final ExecutionException | RuntimeException exception) {
136+
log.error("Exception thrown when retrieving messages", exception);
136137

137138
try {
138139
Thread.sleep(getBackoffTimeInMs());

0 commit comments

Comments
 (0)