Class IllegalThrowsCheck

  • All Implemented Interfaces:
    Configurable, Contextualizable

    public final class IllegalThrowsCheck
    extends AbstractCheck

    Checks that specified types are not declared to be thrown. Declaring that a method throws java.lang.Error or java.lang.RuntimeException is almost never acceptable.

    • Property illegalClassNames - Specify throw class names to reject. Type is java.lang.String[]. Default value is Error, RuntimeException, Throwable, java.lang.Error, java.lang.RuntimeException, java.lang.Throwable.
    • Property ignoredMethodNames - Specify names of methods to ignore. Type is java.lang.String[]. Default value is finalize.
    • Property ignoreOverriddenMethods - allow to ignore checking overridden methods (marked with Override or java.lang.Override annotation). Type is boolean. Default value is true.

    To configure the check:

     <module name="IllegalThrows"/>
     

    Example:

     public class Test {
       public void func1() throws RuntimeException {} // violation
       public void func2() throws Exception {}  // ok
       public void func3() throws Error {}  // violation
       public void func4() throws Throwable {} // violation
       public void func5() throws NullPointerException {} // ok
       @Override
       public void toString() throws Error {} // ok
     }
     

    To configure the check rejecting throws NullPointerException from methods:

     <module name="IllegalThrows">
       <property name="illegalClassNames" value="NullPointerException"/>
     </module>
     

    Example:

     public class Test {
       public void func1() throws RuntimeException {} // ok
       public void func2() throws Exception {}  // ok
       public void func3() throws Error {}  // ok
       public void func4() throws Throwable {} // ok
       public void func5() throws NullPointerException {} // violation
       @Override
       public void toString() throws Error {} // ok
     }
     

    To configure the check ignoring method named "func1()":

     <module name="IllegalThrows">
       <property name="ignoredMethodNames" value="func1"/>
     </module>
     

    Example:

     public class Test {
       public void func1() throws RuntimeException {} // ok
       public void func2() throws Exception {}  // ok
       public void func3() throws Error {}  // violation
       public void func4() throws Throwable {} // violation
       public void func5() throws NullPointerException {} // ok
       @Override
       public void toString() throws Error {} // ok
     }
     

    To configure the check to warn on overridden methods:

     <module name="IllegalThrows">
       <property name="ignoreOverriddenMethods" value="false"/>
     </module>
     

    Example:

     public class Test {
       public void func1() throws RuntimeException {} // violation
       public void func2() throws Exception {}  // ok
       public void func3() throws Error {}  // violation
       public void func4() throws Throwable {} // violation
       public void func5() throws NullPointerException {} // ok
       @Override
       public void toString() throws Error {} // violation
     }
     

    Parent is com.puppycrawl.tools.checkstyle.TreeWalker

    Violation Message Keys:

    • illegal.throw
    Since:
    4.0
    • Field Detail

      • MSG_KEY

        public static final java.lang.String MSG_KEY
        A key is pointing to the warning message text in "messages.properties" file.
        See Also:
        Constant Field Values
    • Constructor Detail

      • IllegalThrowsCheck

        public IllegalThrowsCheck()
    • Method Detail

      • setIllegalClassNames

        public void setIllegalClassNames​(java.lang.String... classNames)
        Setter to specify throw class names to reject.
        Parameters:
        classNames - array of illegal exception classes
      • getDefaultTokens

        public int[] getDefaultTokens()
        Description copied from class: AbstractCheck
        Returns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.
        Specified by:
        getDefaultTokens in class AbstractCheck
        Returns:
        the default tokens
        See Also:
        TokenTypes
      • getRequiredTokens

        public int[] getRequiredTokens()
        Description copied from class: AbstractCheck
        The tokens that this check must be registered for.
        Specified by:
        getRequiredTokens in class AbstractCheck
        Returns:
        the token set this must be registered for.
        See Also:
        TokenTypes
      • getAcceptableTokens

        public int[] getAcceptableTokens()
        Description copied from class: AbstractCheck
        The configurable token set. Used to protect Checks against malicious users who specify an unacceptable token set in the configuration file. The default implementation returns the check's default tokens.
        Specified by:
        getAcceptableTokens in class AbstractCheck
        Returns:
        the token set this check is designed for.
        See Also:
        TokenTypes
      • visitToken

        public void visitToken​(DetailAST detailAST)
        Description copied from class: AbstractCheck
        Called to process a token.
        Overrides:
        visitToken in class AbstractCheck
        Parameters:
        detailAST - the token to process
      • setIgnoredMethodNames

        public void setIgnoredMethodNames​(java.lang.String... methodNames)
        Setter to specify names of methods to ignore.
        Parameters:
        methodNames - array of ignored method names
      • setIgnoreOverriddenMethods

        public void setIgnoreOverriddenMethods​(boolean ignoreOverriddenMethods)
        Setter to allow to ignore checking overridden methods (marked with Override or java.lang.Override annotation).
        Parameters:
        ignoreOverriddenMethods - Check's property.