Rename exception variables in empty catch blocks

The Spring codebase sometimes ignores exceptions in catch blocks on
purpose. This is often called out by an inline comment.
We should make this more obvious by renaming the exception argument in
the catch block to declare whether the exception is "ignored" or
"expected".

See gh-35047

Signed-off-by: Vincent Potucek <vpotucek@me.com>
[brian.clozel@broadcom.com: rework commit message]
Signed-off-by: Brian Clozel <brian.clozel@broadcom.com>
This commit is contained in:
Vincent Potucek 2025-06-13 16:03:24 +02:00 committed by Brian Clozel
parent cd3ac44fb0
commit 0d4dfb6c1f
46 changed files with 66 additions and 108 deletions

View File

@ -158,8 +158,7 @@ class AdvisorAutoProxyCreatorIntegrationTests {
try {
rb.echoException(new ServletException());
}
catch (ServletException ex) {
catch (ServletException ignored) {
}
assertThat(txMan.commits).as("Transaction counts match").isEqualTo(1);
}
@ -272,7 +271,7 @@ class OrderedTxCheckAdvisor extends StaticMethodMatcherPointcutAdvisor implement
TransactionInterceptor.currentTransactionStatus();
throw new RuntimeException("Shouldn't have a transaction");
}
catch (NoTransactionException ex) {
catch (NoTransactionException ignored) {
// this is Ok
}
}

View File

@ -453,9 +453,9 @@ public class AspectJExpressionPointcut extends AbstractExpressionPointcut
ClassUtils.toClassArray(ifcs), targetClass.getClassLoader());
targetMethod = ClassUtils.getMostSpecificMethod(targetMethod, compositeInterface);
}
catch (IllegalArgumentException ex) {
// Implemented interfaces probably expose conflicting method signatures...
// Proceed with original target method.
// Implemented interfaces probably expose conflicting method signatures...
// Proceed with original target method.
catch (IllegalArgumentException ignored) {
}
}
}
@ -478,7 +478,7 @@ public class AspectJExpressionPointcut extends AbstractExpressionPointcut
try {
shadowMatch = pointcutExpression.matchesMethodExecution(methodToMatch);
}
catch (ReflectionWorldException ex) {
catch (ReflectionWorldException ignored) {
// Failed to introspect target method, probably because it has been loaded
// in a special ClassLoader. Let's try the declaring ClassLoader instead...
try {
@ -501,7 +501,7 @@ public class AspectJExpressionPointcut extends AbstractExpressionPointcut
try {
shadowMatch = pointcutExpression.matchesMethodExecution(methodToMatch);
}
catch (ReflectionWorldException ex) {
catch (ReflectionWorldException ignored) {
// Could neither introspect the target class nor the proxy class ->
// let's try the original method's declaring class before we give up...
try {

View File

@ -208,8 +208,8 @@ public abstract class BeanFactoryAnnotationUtils {
}
}
}
catch (NoSuchBeanDefinitionException ex) {
// Ignore - can't compare qualifiers for a manually registered singleton object
catch (NoSuchBeanDefinitionException ignored) {
// can't compare qualifiers for a manually registered singleton object
}
}
return false;

View File

@ -523,8 +523,7 @@ final class PostProcessorRegistrationDelegate {
try {
typedStringValue.resolveTargetType(this.beanFactory.getBeanClassLoader());
}
catch (ClassNotFoundException ex) {
// ignore
catch (ClassNotFoundException ignored) {
}
}

View File

@ -266,8 +266,8 @@ public class LocalValidatorFactoryBean extends SpringValidatorAdapter
Method eclMethod = configuration.getClass().getMethod("externalClassLoader", ClassLoader.class);
ReflectionUtils.invokeMethod(eclMethod, configuration, this.applicationContext.getClassLoader());
}
catch (NoSuchMethodException ex) {
// Ignore - no Hibernate Validator 5.2+ or similar provider
catch (NoSuchMethodException ignored) {
// no Hibernate Validator 5.2+ or similar provider
}
}
@ -417,8 +417,8 @@ public class LocalValidatorFactoryBean extends SpringValidatorAdapter
try {
return super.unwrap(type);
}
catch (ValidationException ex) {
// Ignore - we'll try ValidatorFactory unwrapping next
catch (ValidationException ignored) {
// we'll try ValidatorFactory unwrapping next
}
}
if (this.validatorFactory != null) {

View File

@ -233,8 +233,7 @@ abstract class AbstractAopProxyTests {
try {
p2.echo(new IOException());
}
catch (IOException ex) {
catch (IOException ignored) {
}
assertThat(cta.getCalls()).isEqualTo(2);
}

View File

@ -84,8 +84,7 @@ final class CompileWithForkedClassLoaderClassLoader extends ClassLoader {
try (stream) {
return stream.readAllBytes();
}
catch (IOException ex) {
// ignore
catch (IOException ignored) {
}
}
return null;

View File

@ -73,7 +73,8 @@ class BridgeMethodResolver {
} finally {
is.close();
}
} catch (IOException ignored) {}
} catch (IOException ignored) {
}
}
return resolved;
}

View File

@ -62,8 +62,8 @@ public class MethodProxy {
try {
proxy.init();
}
catch (CodeGenerationException ex) {
// Ignore - to be retried when actually needed later on (possibly not at all)
catch (CodeGenerationException ignored) {
// to be retried when actually needed later on (possibly not at all)
}
}
// SPRING PATCH END

View File

@ -438,8 +438,7 @@ public class SpringFactoriesLoader {
return constructor;
}
}
catch (UnsupportedOperationException ex) {
// ignore
catch (UnsupportedOperationException ignored) {
}
return null;
}

View File

@ -229,8 +229,7 @@ public abstract class FileCopyUtils {
try {
closeable.close();
}
catch (IOException ex) {
// ignore
catch (IOException ignored) {
}
}

View File

@ -526,8 +526,7 @@ public class DefaultStompSession implements ConnectionHandlingStompSession {
try {
conn.close();
}
catch (Throwable ex) {
// ignore
catch (Throwable ignored) {
}
}
}

View File

@ -1000,8 +1000,7 @@ public class Jaxb2Marshaller implements MimeMarshaller, MimeUnmarshaller, Generi
URI uri = ResourceUtils.toURI(elementNamespace);
return uri.getHost();
}
catch (URISyntaxException ex) {
// ignore
catch (URISyntaxException ignored) {
}
return dataHandler.getName();
}

View File

@ -710,8 +710,7 @@ class R2dbcTransactionManagerTests {
try {
return Mono.fromRunnable(() -> doAfterCompletion(status));
}
catch (Throwable ex) {
// ignore
catch (Throwable ignored) {
}
return Mono.empty();

View File

@ -100,8 +100,7 @@ public class MockClientHttpResponse extends MockHttpInputMessage implements Clie
try {
getBody().close();
}
catch (IOException ex) {
// ignore
catch (IOException ignored) {
}
}

View File

@ -1129,8 +1129,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
try {
return simpleDateFormat.parse(value).getTime();
}
catch (ParseException ex) {
// ignore
catch (ParseException ignored) {
}
}
throw new IllegalArgumentException("Cannot parse date value '" + value + "' for '" + name + "' header");

View File

@ -1223,8 +1223,7 @@ public class HttpHeaders implements Serializable {
try {
port = Integer.parseInt(portString);
}
catch (NumberFormatException ex) {
// ignore
catch (NumberFormatException ignored) {
}
}

View File

@ -89,8 +89,7 @@ final class HttpComponentsClientHttpResponse implements ClientHttpResponse {
this.httpResponse.close();
}
}
catch (IOException ex) {
// Ignore exception on close...
catch (IOException ignored) {
}
}

View File

@ -108,8 +108,7 @@ final class ReactorClientHttpResponse implements ClientHttpResponse {
StreamUtils.drain(body);
body.close();
}
catch (IOException ex) {
// ignore
catch (IOException ignored) {
}
}

View File

@ -119,8 +119,7 @@ class HttpComponentsClientHttpResponse extends AbstractClientHttpResponse {
ZonedDateTime expiresDate = ZonedDateTime.parse(expiresAttribute, DateTimeFormatter.RFC_1123_DATE_TIME);
return Duration.between(ZonedDateTime.now(expiresDate.getZone()), expiresDate).toSeconds();
}
catch (DateTimeParseException ex) {
// ignore
catch (DateTimeParseException ignored) {
}
}
return -1;

View File

@ -158,20 +158,20 @@ public class ResourceHttpMessageConverter extends AbstractHttpMessageConverter<R
in.transferTo(out);
out.flush();
}
catch (NullPointerException ex) {
// ignore, see SPR-13620
catch (NullPointerException ignored) {
// see SPR-13620
}
finally {
try {
in.close();
}
catch (Throwable ex) {
// ignore, see SPR-12999
catch (Throwable ignored) {
// see SPR-12999
}
}
}
catch (FileNotFoundException ex) {
// ignore, see SPR-12999
catch (FileNotFoundException ignored) {
// see SPR-12999
}
}

View File

@ -183,8 +183,7 @@ public class ResourceRegionHttpMessageConverter extends AbstractGenericHttpMessa
try {
in.close();
}
catch (IOException ex) {
// ignore
catch (IOException ignored) {
}
}
}
@ -244,8 +243,7 @@ public class ResourceRegionHttpMessageConverter extends AbstractGenericHttpMessa
in.close();
}
}
catch (IOException ex) {
// ignore
catch (IOException ignored) {
}
}

View File

@ -270,8 +270,7 @@ public class SourceHttpMessageConverter<T extends Source> extends AbstractHttpMe
transform(t, new StreamResult(os));
return os.count;
}
catch (TransformerException ex) {
// ignore
catch (TransformerException ignored) {
}
}
return null;

View File

@ -439,8 +439,7 @@ public abstract class AbstractListenerWriteProcessor<T> implements Processor<T,
// ignore
}
@Override
public <T> void onError(AbstractListenerWriteProcessor<T> processor, Throwable ex) {
// ignore
public <T> void onError(AbstractListenerWriteProcessor<T> processor, Throwable ignored) {
}
@Override
public <T> void onComplete(AbstractListenerWriteProcessor<T> processor) {

View File

@ -309,8 +309,7 @@ public class ServletHttpHandlerAdapter implements Servlet {
try {
listener.onTimeout(event);
}
catch (Exception ex) {
// Ignore
catch (Exception ignored) {
}
}
@ -318,8 +317,7 @@ public class ServletHttpHandlerAdapter implements Servlet {
try {
listener.onError(event);
}
catch (Exception ex) {
// Ignore
catch (Exception ignored) {
}
}
@ -327,8 +325,7 @@ public class ServletHttpHandlerAdapter implements Servlet {
try {
listener.onComplete(event);
}
catch (Exception ex) {
// Ignore
catch (Exception ignored) {
}
}

View File

@ -152,8 +152,7 @@ public class HttpMessageConverterExtractor<T> implements ResponseExtractor<T> {
try {
return FileCopyUtils.copyToByteArray(response.getBody());
}
catch (IOException ex) {
// ignore
catch (IOException ignored) {
}
return new byte[0];
}

View File

@ -113,8 +113,7 @@ class CallableInterceptorChain {
try {
future.cancel(true);
}
catch (Throwable ex) {
// Ignore
catch (Throwable ignored) {
}
}
}

View File

@ -235,8 +235,7 @@ public class StandardServletAsyncWebRequest extends ServletWebRequest implements
break;
}
}
catch (InterruptedException ex) {
// ignore
catch (InterruptedException ignored) {
}
}

View File

@ -122,8 +122,7 @@ public class ServletContextResource extends AbstractFileResolvingResource implem
try {
is.close();
}
catch (IOException ex) {
// ignore
catch (IOException ignored) {
}
return true;
}

View File

@ -151,8 +151,7 @@ public final class HttpServiceProxyRegistryFactoryBean
Class<?> clazz = ClassUtils.forName(className, HttpServiceGroupAdapter.class.getClassLoader());
groupAdapters.put(clientType, (HttpServiceGroupAdapter<?>) BeanUtils.instantiateClass(clazz));
}
catch (ClassNotFoundException ex) {
// ignore
catch (ClassNotFoundException ignored) {
}
}
}

View File

@ -93,7 +93,7 @@ class RequestContextListenerTests {
try {
thread.join();
}
catch (InterruptedException ex) {
catch (InterruptedException ignored) {
}
// Still bound to original thread, but at least completed.
assertThat(RequestContextHolder.getRequestAttributes()).isNotNull();

View File

@ -100,8 +100,7 @@ public class MockClientHttpResponse extends MockHttpInputMessage implements Clie
try {
getBody().close();
}
catch (IOException ex) {
// ignore
catch (IOException ignored) {
}
}

View File

@ -1128,8 +1128,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
try {
return simpleDateFormat.parse(value).getTime();
}
catch (ParseException ex) {
// ignore
catch (ParseException ignored) {
}
}
throw new IllegalArgumentException("Cannot parse date value '" + value + "' for '" + name + "' header");

View File

@ -77,8 +77,7 @@ abstract class WebClientUtils {
try {
uri = new URI(uri.getScheme(), null, uri.getHost(), uri.getPort(), uri.getPath(), null, null);
}
catch (URISyntaxException ex) {
// ignore
catch (URISyntaxException ignored) {
}
}
return httpMethod.name() + " " + uri;

View File

@ -357,8 +357,7 @@ class DefaultServerRequestBuilder implements ServerRequest.Builder {
.cache();
}
}
catch (InvalidMediaTypeException ex) {
// Ignore
catch (InvalidMediaTypeException ignored) {
}
return EMPTY_FORM_DATA;
}
@ -379,8 +378,7 @@ class DefaultServerRequestBuilder implements ServerRequest.Builder {
.cache();
}
}
catch (InvalidMediaTypeException ex) {
// Ignore
catch (InvalidMediaTypeException ignored) {
}
return EMPTY_MULTIPART_DATA;
}

View File

@ -76,8 +76,7 @@ public abstract class ResourceHandlerUtils {
Assert.isTrue(path.endsWith(FOLDER_SEPARATOR) || path.endsWith(WINDOWS_FOLDER_SEPARATOR),
"Resource location does not end with slash: " + path);
}
catch (IOException ex) {
// ignore
catch (IOException ignored) {
}
}

View File

@ -211,8 +211,7 @@ public final class ProducesRequestCondition extends AbstractRequestCondition<Pro
return EMPTY_CONDITION;
}
}
catch (NotAcceptableStatusException | UnsupportedMediaTypeStatusException ex) {
// Ignore
catch (NotAcceptableStatusException | UnsupportedMediaTypeStatusException ignored) {
}
}
return null;

View File

@ -622,8 +622,7 @@ public class MvcUriComponentsBuilder {
try {
return wac.getBean(MVC_URI_COMPONENTS_CONTRIBUTOR_BEAN_NAME, CompositeUriComponentsContributor.class);
}
catch (NoSuchBeanDefinitionException ex) {
// Ignore
catch (NoSuchBeanDefinitionException ignored) {
}
}
return defaultUriComponentsContributor;

View File

@ -788,8 +788,7 @@ public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter
return getBeanFactory().getBean(
DispatcherServlet.LOCALE_RESOLVER_BEAN_NAME, LocaleResolver.class);
}
catch (NoSuchBeanDefinitionException ex) {
// ignore
catch (NoSuchBeanDefinitionException ignored) {
}
}
return null;

View File

@ -191,8 +191,7 @@ public class RequestPartMethodArgumentResolver extends AbstractMessageConverterM
try {
body.close();
}
catch (IOException ex) {
// ignore
catch (IOException ignored) {
}
}

View File

@ -77,8 +77,7 @@ public abstract class ResourceHandlerUtils {
Assert.isTrue(path.endsWith(FOLDER_SEPARATOR) || path.endsWith(WINDOWS_FOLDER_SEPARATOR),
"Resource location does not end with slash: " + path);
}
catch (IOException ex) {
// ignore
catch (IOException ignored) {
}
}

View File

@ -611,8 +611,7 @@ class ExceptionHandlerExceptionResolverTests {
@ExceptionHandler(SocketTimeoutException.class)
@ResponseStatus(code = HttpStatus.GATEWAY_TIMEOUT, reason = "gateway.timeout")
public void handleException(SocketTimeoutException ex) {
public void handleException(SocketTimeoutException ignored) {
}
}

View File

@ -41,8 +41,7 @@ public class BinaryWebSocketHandler extends AbstractWebSocketHandler {
try {
session.close(CloseStatus.NOT_ACCEPTABLE.withReason("Text messages not supported"));
}
catch (IOException ex) {
// ignore
catch (IOException ignored) {
}
}

View File

@ -93,8 +93,7 @@ public class ExceptionWebSocketHandlerDecorator extends WebSocketHandlerDecorato
try {
session.close(CloseStatus.SERVER_ERROR);
}
catch (Throwable ex) {
// ignore
catch (Throwable ignored) {
}
}
}

View File

@ -41,8 +41,7 @@ public class TextWebSocketHandler extends AbstractWebSocketHandler {
try {
session.close(CloseStatus.NOT_ACCEPTABLE.withReason("Binary messages not supported"));
}
catch (IOException ex) {
// ignore
catch (IOException ignored) {
}
}

View File

@ -412,8 +412,7 @@ public class StompSubProtocolHandler implements SubProtocolHandler, ApplicationE
try {
session.close(CloseStatus.PROTOCOL_ERROR);
}
catch (IOException ex) {
// Ignore
catch (IOException ignored) {
}
}
}