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
ignoreOverriddenMethods Allow to ignore checking overridden methods (marked with Override or java.lang.Override annotation). boolean true 6.4
ignoredMethodNames Specify names of methods to ignore. String[] finalize 5.4
illegalClassNames Specify throw class names to reject. String[] Error, RuntimeException, Throwable, java.lang.Error, java.lang.RuntimeException, java.lang.Throwable 4.0

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