Class EmptyCatchBlockCheck

  • All Implemented Interfaces:
    Configurable, Contextualizable

    public class EmptyCatchBlockCheck
    extends AbstractCheck

    Checks for empty catch blocks. There are two options to make validation more precise:

    exceptionVariableName - the name of variable associated with exception, if Check meets variable name matching specified value - empty block is suppressed.
    default value: "^$"

    commentFormat - the format of 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.
    default value: ".*"
    So, by default Check allows empty catch block with any comment inside.

    If both options are specified - they are applied by any of them is matching.

    Examples:

    To configure the Check to suppress empty catch block if exception's variable name is expected or ignore:

     <module name="EmptyCatchBlock">
        <property name="exceptionVariableName" value="ignore|expected;/>
     </module>
     

    Such empty blocks would be both suppressed:

     
     try {
         throw new RuntimeException();
     } catch (RuntimeException expected) {
     }
     
     
     try {
         throw new RuntimeException();
     } catch (RuntimeException ignore) {
     }
     
     

    To configure the Check to suppress empty catch block if single-line comment inside is "//This is expected":

     <module name="EmptyCatchBlock">
        <property name="commentFormat" value="This is expected"/>
     </module>
     

    Such empty block would be suppressed:

     
     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" or exception's variable name is "myException":

     <module name="EmptyCatchBlock">
        <property name="commentFormat" value="This is expected"/>
        <property name="exceptionVariableName" value="myException"/>
     </module>
     

    Such empty blocks would be both suppressed:

     
     try {
         throw new RuntimeException();
     } catch (RuntimeException ex) {
         //This is expected
     }
     
     
     try {
         throw new RuntimeException();
     } catch (RuntimeException myException) {
    
     }
     
     
    Author:
    Aleksey Nesterenko