<p>
An exception in a <code>throws</code> declaration in Java is redundant if:
</p>

<ul>
  <li>It is listed multiple times</li>
  <li>It is a subclass of another listed exception</li>
  <li>It is a <code>RuntimeException</code>, or one of its descendants</li>
</ul>

<p>
The following code:
</p>

<pre>
void foo() throws MyException, MyException {}  // Non-Compliant - should be listed once
void bar() throws Throwable, Exception {}      // Non-Compliant - Exception is a subclass of Throwable
void baz() throws RuntimeException {}          // Non-Compliant - RuntimeException can always be thrown
</pre>

<p>
should be refactored into:
</p>

<pre>
void foo() throws MyException {}               // Compliant
void bar() throws Throwable {}                 // Compliant
void baz() {}                                  // Compliant
</pre>