Spring / Spring Retry Interview Questions
How does Spring Retry handle exceptions that are not in the retryFor list?
When an exception is thrown that is not listed in retryFor (or include in older versions) and is not an Exception.class default match, Spring Retry treats it as a non-recoverable failure and immediately rethrows it without retrying, regardless of how many attempts remain.
This behavior is intentional: Spring Retry assumes that if a specific exception type is thrown and it was not declared as retryable, it likely represents a permanent error (like a validation failure or a programming bug) where retrying would be pointless or harmful.
Example:
@Retryable(retryFor = { IOException.class }, maxAttempts = 5)
public void processFile(String path) throws IOException {
// If IllegalArgumentException is thrown here,
// Spring Retry will NOT retry — it rethrows immediately
}If you want to retry all exceptions, you can explicitly declare:
@Retryable(retryFor = Exception.class)Or use the noRetryFor attribute to block only specific types while letting all others retry. The exception hierarchy matters: if retryFor = IOException.class, then subclasses like SocketTimeoutException are also retried since they extend IOException.
Invest now in Acorns!!! 🚀
Join Acorns and get your $5 bonus!
Acorns is a micro-investing app that automatically invests your "spare change" from daily purchases into diversified, expert-built portfolios of ETFs. It is designed for beginners, allowing you to start investing with as little as $5. The service automates saving and investing. Disclosure: I may receive a referral bonus.
Invest now!!! Get Free equity stock (US, UK only)!
Use Robinhood app to invest in stocks. It is safe and secure. Use the Referral link to claim your free stock when you sign up!.
The Robinhood app makes it easy to trade stocks, crypto and more.
Webull! Receive free stock by signing up using the link: Webull signup.
More Related questions...
