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 Details

    • MSG_KEY

      public static final String MSG_KEY
      A key is pointing to the warning message text in "messages.properties" file.
      See Also:
  • Constructor Details

    • IllegalThrowsCheck

      public IllegalThrowsCheck()
  • Method Details

    • setIllegalClassNames

      public void setIllegalClassNames(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:
    • 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:
    • 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:
    • 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(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.