An exception in a ``++throws++`` declaration in Java is superfluous if it is: * listed multiple times * a subclass of another listed exception * a ``++RuntimeException++``, or one of its descendants * completely unnecessary because the declared exception type cannot actually be thrown == Noncompliant Code Example ---- void foo() throws MyException { throw new MyException(); } @Test public void testMethod1() throws MyException, MyException { // Noncompliant; should be listed once foo(); } @Test public void testMethod2() throws MyException { //Noncompliant, exception cannot be thrown } @Test public void testMethod3() throws Throwable, Exception {} // Noncompliant; Exception is a subclass of Throwable @Test public void testMethod4 throws RuntimeException {} // Noncompliant; RuntimeException can always be thrown ---- == Compliant Solution ---- @Test public void testMethod1() throws MyException { foo(); } @Test public void testMethod2() { } @Test public void testMethod3()throws Throwable {} @Test public void testMethod4() {} ---- == See * Related rule {S1130}