ThrowsCount
Since Checkstyle 3.2
Description
          Rationale:
          Exceptions form part of a method's interface. Declaring
          a method to throw too many differently rooted
          exceptions makes exception handling onerous and leads
          to poor programming practices such as writing code like
          catch(Exception ex). 4 is the empirical value which is based
          on reports that we had for the ThrowsCountCheck over big projects
          such as OpenJDK. This check also forces developers to put exceptions
          into a hierarchy such that in the simplest
          case, only one type of exception need be checked for by
          a caller but any subclasses can be caught
          specifically if necessary. For more information on rules
          for the exceptions and their issues, see Effective Java:
          Programming Language Guide Second Edition
          by Joshua Bloch pages 264-273.
        
ignorePrivateMethods - allows to skip private methods as they do not cause problems for other classes.
Properties
| name | description | type | default value | since | 
|---|---|---|---|---|
| ignorePrivateMethods | Allow private methods to be ignored. | boolean | true | 
              
6.7 | 
| max | Specify maximum allowed number of throws statements. | int | 4 | 
              
3.2 | 
Examples
To configure check:
<module name="Checker">
  <module name="TreeWalker">
    <module name="ThrowsCount"/>
  </module>
</module>
Example:
public class Example1 {
  // violation below, 'Throws count is 5 (max allowed is 4)'
  public void myFunction() throws CloneNotSupportedException,
                                ArrayIndexOutOfBoundsException,
                                StringIndexOutOfBoundsException,
                                IllegalStateException,
                                NullPointerException {
  }
  public void myFunc() throws ArithmeticException,
                                NumberFormatException,
                                NullPointerException {
  }
  private void privateFunc() throws CloneNotSupportedException,
                                ClassNotFoundException,
                                IllegalAccessException,
                                ArithmeticException,
                                ClassCastException {
  }
  private void func() throws IllegalStateException,
                                NullPointerException {
  }
}
To configure the check so that it doesn't allow more than two throws per method:
<module name="Checker">
  <module name="TreeWalker">
    <module name="ThrowsCount">
      <property name="max" value="2"/>
    </module>
  </module>
</module>
Example:
public class Example2 {
  // violation below, 'Throws count is 5 (max allowed is 2)'
  public void myFunction() throws CloneNotSupportedException,
                                ArrayIndexOutOfBoundsException,
                                StringIndexOutOfBoundsException,
                                IllegalStateException,
                                NullPointerException {
  }
  // violation below, 'Throws count is 3 (max allowed is 2)'
  public void myFunc() throws ArithmeticException,
                                NumberFormatException,
                                NullPointerException {
  }
  private void privateFunc() throws CloneNotSupportedException,
                                ClassNotFoundException,
                                IllegalAccessException,
                                ArithmeticException,
                                ClassCastException {
  }
  private void func() throws IllegalStateException,
                                NullPointerException {
  }
}
To configure the check so that it doesn't skip private methods:
<module name="Checker">
  <module name="TreeWalker">
    <module name="ThrowsCount">
      <property name="ignorePrivateMethods" value="false"/>
    </module>
  </module>
</module>
Example:
public class Example3 {
  // violation below, 'Throws count is 5 (max allowed is 4)'
  public void myFunction() throws CloneNotSupportedException,
                                ArrayIndexOutOfBoundsException,
                                StringIndexOutOfBoundsException,
                                IllegalStateException,
                                NullPointerException {
  }
  public void myFunc() throws ArithmeticException,
                                NumberFormatException,
                                NullPointerException {
  }
  // violation below, 'Throws count is 5 (max allowed is 4)'
  private void privateFunc() throws CloneNotSupportedException,
                                ClassNotFoundException,
                                IllegalAccessException,
                                ArithmeticException,
                                ClassCastException {
  }
  private void func() throws IllegalStateException,
                                NullPointerException {
  }
}
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.design






