Class IllegalCatchCheck

  • All Implemented Interfaces:
    Configurable, Contextualizable

    public final class IllegalCatchCheck
    extends AbstractCheck

    Checks that certain exception types do not appear in a catch statement.

    Rationale: catching java.lang.Exception, java.lang.Error or java.lang.RuntimeException is almost never acceptable. Novice developers often simply catch Exception in an attempt to handle multiple exception classes. This unfortunately leads to code that inadvertently catches NullPointerException, OutOfMemoryError, etc.

    • Property illegalClassNames - Specify exception class names to reject. Type is java.lang.String[]. Default value is Error, Exception, RuntimeException, Throwable, java.lang.Error, java.lang.Exception, java.lang.RuntimeException, java.lang.Throwable.

    To configure the check:

     <module name="IllegalCatch"/>
     

    Example:

     try {
         // some code here
     } catch (Exception e) { // violation
    
     }
    
     try {
         // some code here
     } catch (ArithmeticException e) { // OK
    
     } catch (Exception e) { // violation, catching Exception is illegal
                               and order of catch blocks doesn't matter
     }
    
     try {
         // some code here
     } catch (ArithmeticException | Exception e) { // violation, catching Exception is illegal
    
     }
    
     try {
         // some code here
     } catch (ArithmeticException e) { // OK
    
     }
    
     

    To configure the check to override the default list with ArithmeticException and OutOfMemoryError:

     <module name="IllegalCatch">
       <property name="illegalClassNames" value="ArithmeticException,
                   OutOfMemoryError"/>
     </module>
     

    Example:

     try {
         // some code here
     } catch (OutOfMemoryError e) { // violation
    
     }
    
     try {
         // some code here
     } catch (ArithmeticException e) { // violation
    
     }
    
     try {
         // some code here
     } catch (NullPointerException e) { // OK
    
     } catch (OutOfMemoryError e) { // violation
    
     }
    
     try {
         // some code here
     } catch (ArithmeticException | Exception e) {  // violation
    
     }
    
     try {
         // some code here
     } catch (Exception e) { // OK
    
     }
     

    Parent is com.puppycrawl.tools.checkstyle.TreeWalker

    Violation Message Keys:

    • illegal.catch
    Since:
    3.2