IllegalThrows

Since Checkstyle 4.0

Description

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.

Properties

name description type default value since
illegalClassNames Specify throw class names to reject. String[] Error, RuntimeException, Throwable, java.lang.Error, java.lang.RuntimeException, java.lang.Throwable 4.0
ignoredMethodNames Specify names of methods to ignore. String[] finalize 5.4
ignoreOverriddenMethods allow to ignore checking overridden methods (marked with Override or java.lang.Override annotation). boolean true 6.4

Examples

To configure the check:

<module name="Checker">
  <module name="TreeWalker">
    <module name="IllegalThrows"/>
  </module>
</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 {} // ok
}
        

To configure the check rejecting throws NullPointerException from methods:

<module name="Checker">
  <module name="TreeWalker">
    <module name="IllegalThrows">
      <property name="illegalClassNames" value="NullPointerException"/>
    </module>
  </module>
</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="Checker">
  <module name="TreeWalker">
    <module name="IllegalThrows">
      <property name="ignoredMethodNames" value="func1"/>
    </module>
  </module>
</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="Checker">
  <module name="TreeWalker">
    <module name="IllegalThrows">
      <property name="ignoreOverriddenMethods" value="false"/>
    </module>
  </module>
</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
}
        

Example of Usage

Violation Messages

All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.

Package

com.puppycrawl.tools.checkstyle.checks.coding

Parent Module

TreeWalker