Browse Source

Configure CheckStyle rule for empty catch blocks

This commit configures a new CheckStyle rule that fails for empty
"catch" blocks, unless the exception is named "ignored" or "expected".

This also fixes the remaining instances missed by the previous commit.

Closes gh-35047
pull/35061/head
Brian Clozel 6 months ago
parent
commit
af7758cbc7
  1. 10
      spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java
  2. 2
      spring-core/src/main/java/org/springframework/aot/nativex/substitution/Target_Introspector.java
  3. 3
      spring-core/src/main/java/org/springframework/cglib/proxy/BridgeMethodResolver.java
  4. 3
      spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteProcessor.java
  5. 2
      spring-web/src/main/java/org/springframework/web/filter/FormContentFilter.java
  6. 3
      spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ExceptionHandlerExceptionResolverTests.java
  7. 2
      src/checkstyle/checkstyle-suppressions.xml
  8. 3
      src/checkstyle/checkstyle.xml

10
spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java

@ -453,9 +453,9 @@ public class AspectJExpressionPointcut extends AbstractExpressionPointcut @@ -453,9 +453,9 @@ public class AspectJExpressionPointcut extends AbstractExpressionPointcut
ClassUtils.toClassArray(ifcs), targetClass.getClassLoader());
targetMethod = ClassUtils.getMostSpecificMethod(targetMethod, compositeInterface);
}
// Implemented interfaces probably expose conflicting method signatures...
// Proceed with original target method.
catch (IllegalArgumentException ignored) {
catch (IllegalArgumentException ex) {
// Implemented interfaces probably expose conflicting method signatures...
// Proceed with original target method.
}
}
}
@ -478,7 +478,7 @@ public class AspectJExpressionPointcut extends AbstractExpressionPointcut @@ -478,7 +478,7 @@ public class AspectJExpressionPointcut extends AbstractExpressionPointcut
try {
shadowMatch = pointcutExpression.matchesMethodExecution(methodToMatch);
}
catch (ReflectionWorldException ignored) {
catch (ReflectionWorldException ex) {
// 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 @@ -501,7 +501,7 @@ public class AspectJExpressionPointcut extends AbstractExpressionPointcut
try {
shadowMatch = pointcutExpression.matchesMethodExecution(methodToMatch);
}
catch (ReflectionWorldException ignored) {
catch (ReflectionWorldException ex) {
// Could neither introspect the target class nor the proxy class ->
// let's try the original method's declaring class before we give up...
try {

2
spring-core/src/main/java/org/springframework/aot/nativex/substitution/Target_Introspector.java

@ -48,7 +48,7 @@ final class Target_Introspector { @@ -48,7 +48,7 @@ final class Target_Introspector {
} while (!c.getName().equals("java.lang.Object"));
}
}
catch (Exception exception) {
catch (Exception ignored) {
}
return null;
}

3
spring-core/src/main/java/org/springframework/cglib/proxy/BridgeMethodResolver.java

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

3
spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteProcessor.java

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

2
spring-web/src/main/java/org/springframework/web/filter/FormContentFilter.java

@ -116,7 +116,7 @@ public class FormContentFilter extends OncePerRequestFilter { @@ -116,7 +116,7 @@ public class FormContentFilter extends OncePerRequestFilter {
MediaType mediaType = MediaType.parseMediaType(contentType);
return MediaType.APPLICATION_FORM_URLENCODED.includes(mediaType);
}
catch (IllegalArgumentException ex) {
catch (IllegalArgumentException ignored) {
}
}
return false;

3
spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/ExceptionHandlerExceptionResolverTests.java

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

2
src/checkstyle/checkstyle-suppressions.xml

@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
<suppress files="(^(?!.+[\\/]src[\\/]main[\\/]java[\\/]).*)|(.*framework-docs.*)" checks="JavadocPackage" />
<!-- Global: tests and test fixtures -->
<suppress files="[\\/]src[\\/](test|testFixtures)[\\/](java|java21)[\\/]" checks="AnnotationLocation|AnnotationUseStyle|AtclauseOrder|AvoidNestedBlocks|FinalClass|HideUtilityClassConstructor|InnerTypeLast|JavadocStyle|JavadocType|JavadocVariable|LeftCurly|MultipleVariableDeclarations|NeedBraces|OneTopLevelClass|OuterTypeFilename|RequireThis|SpringCatch|SpringJavadoc|SpringNoThis|SpringDeprecatedCheck"/>
<suppress files="[\\/]src[\\/](test|testFixtures)[\\/](java|java21)[\\/]" checks="AnnotationLocation|AnnotationUseStyle|AtclauseOrder|AvoidNestedBlocks|FinalClass|HideUtilityClassConstructor|InnerTypeLast|JavadocStyle|JavadocType|JavadocVariable|LeftCurly|MultipleVariableDeclarations|NeedBraces|OneTopLevelClass|OuterTypeFilename|RequireThis|SpringCatch|SpringJavadoc|SpringNoThis|SpringDeprecatedCheck|EmptyCatchBlock"/>
<suppress files="[\\/]src[\\/](test|testFixtures)[\\/](java|java21)[\\/]" checks="RegexpSinglelineJava" id="systemOutErrPrint"/>
<suppress files="[\\/]src[\\/](test|testFixtures)[\\/](java|java21)[\\/]" checks="SpringJUnit5" message="should not be public"/>
<suppress files="[\\/]src[\\/]test[\\/](java|java21)[\\/]org[\\/]springframework[\\/].+(Tests|Suite)" checks="IllegalImport" id="bannedJUnitJupiterImports"/>

3
src/checkstyle/checkstyle.xml

@ -39,6 +39,9 @@ @@ -39,6 +39,9 @@
</module>
<module name="com.puppycrawl.tools.checkstyle.checks.blocks.NeedBracesCheck"/>
<module name="com.puppycrawl.tools.checkstyle.checks.blocks.AvoidNestedBlocksCheck"/>
<module name="com.puppycrawl.tools.checkstyle.checks.blocks.EmptyCatchBlockCheck">
<property name="exceptionVariableName" value="expected|ignore"/>
</module>
<!-- Class Design -->
<module name="com.puppycrawl.tools.checkstyle.checks.design.FinalClassCheck"/>

Loading…
Cancel
Save