Since Checkstyle 6.4
Checks for empty catch blocks. By default, check allows empty catch block with any comment inside.
There are two options to make validation more precise: exceptionVariableName and commentFormat. If both options are specified - they are applied by any of them is matching.
name | description | type | default value | since |
---|---|---|---|---|
commentFormat | Specify the RegExp for the first comment inside empty catch block. If check meets comment inside empty catch block matching specified format - empty block is suppressed. If it is multi-line comment - only its first line is analyzed. | Pattern | ".*" |
6.4 |
exceptionVariableName | Specify the RegExp for the name of the variable associated with exception. If check meets variable name matching specified value - empty block is suppressed. | Pattern | "^$" |
6.4 |
To configure the check:
<module name="Checker"> <module name="TreeWalker"> <module name="EmptyCatchBlock"/> </module> </module>
Such empty blocks would be both suppressed:
public class Example1 { private void exampleMethod1() { try { throw new RuntimeException(); } catch (RuntimeException expected) { } // violation above } private void exampleMethod2() { try { throw new RuntimeException(); } catch (RuntimeException ignore) { // no handling } // ok, catch block has comment } private void exampleMethod3 () { try { throw new RuntimeException(); } catch (RuntimeException o) { } // violation above } private void exampleMethod4 () { try { throw new RuntimeException(); } catch (RuntimeException ex) { // This is expected } } }
To configure the check to suppress empty catch block if exception's variable name is
expected
or ignore
or there's any comment inside:
<module name="Checker"> <module name="TreeWalker"> <module name="EmptyCatchBlock"> <property name="exceptionVariableName" value="expected|ignore"/> </module> </module> </module>
Such empty blocks would be both suppressed:
public class Example2 { private void exampleMethod1() { try { throw new RuntimeException(); } catch (RuntimeException expected) { } } private void exampleMethod2() { try { throw new RuntimeException(); } catch (RuntimeException ignore) { // no handling } } private void exampleMethod3 () { try { throw new RuntimeException(); } catch (RuntimeException o) { } // violation above } private void exampleMethod4 () { try { throw new RuntimeException(); } catch (RuntimeException ex) { // This is expected } } }
To configure the check to suppress empty catch block if single-line comment inside is "This is expected":
<module name="Checker"> <module name="TreeWalker"> <module name="EmptyCatchBlock"> <property name="commentFormat" value="This is expected"/> </module> </module> </module>
Such empty blocks would be both suppressed:
public class Example3 { private void exampleMethod1() { try { throw new RuntimeException(); } catch (RuntimeException expected) { } // violation above } private void exampleMethod2() { try { throw new RuntimeException(); } catch (RuntimeException ignore) { // no handling } // violation 2 lines above } private void exampleMethod3 () { try { throw new RuntimeException(); } catch (RuntimeException o) { } // violation above } private void exampleMethod4 () { try { throw new RuntimeException(); } catch (RuntimeException ex) { // This is expected } } }
To configure the check to suppress empty catch block if single-line comment inside is "This is expected":
<module name="Checker"> <module name="TreeWalker"> <module name="EmptyCatchBlock"> <property name="commentFormat" value="This is expected"/> </module> </module> </module>
Such empty blocks would be both suppressed:
public class Example4 { private void exampleMethod1() { try { throw new RuntimeException(); } catch (RuntimeException e) { //This is expected } } private void exampleMethod2() { try { throw new RuntimeException(); } catch (RuntimeException e) { // This is expected } } private void exampleMethod3 () { try { throw new RuntimeException(); } catch (RuntimeException e) { // This is expected // some another comment } } private void exampleMethod4 () { try { throw new RuntimeException(); } catch (RuntimeException e) { /* This is expected */ } } private void exampleMethod5() { try { throw new RuntimeException(); // violation below } catch (RuntimeException e) { /* * * This is expected * some another comment */ } } }
To configure the check to suppress empty catch block if exception's variable name is "myException":
<module name="Checker"> <module name="TreeWalker"> <module name="EmptyCatchBlock"> <property name="exceptionVariableName" value="myException"/> </module> </module> </module>
Such empty blocks would be both suppressed:
public class Example5 { private void exampleMethod1() { try { throw new RuntimeException(); } catch (RuntimeException e) { } // violation above } private void exampleMethod2() { try { throw new RuntimeException(); } catch (RuntimeException myException) { } } }
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
com.puppycrawl.tools.checkstyle.checks.blocks