
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
82 lines
1.5 KiB
Plaintext
82 lines
1.5 KiB
Plaintext
== Why is this an issue?
|
|
|
|
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
|
|
|
|
[source,java]
|
|
----
|
|
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
|
|
|
|
[source,java]
|
|
----
|
|
@Test
|
|
public void testMethod1() throws MyException {
|
|
foo();
|
|
}
|
|
|
|
@Test
|
|
public void testMethod2() {
|
|
}
|
|
|
|
@Test
|
|
public void testMethod3()throws Throwable {}
|
|
|
|
@Test
|
|
public void testMethod4() {}
|
|
----
|
|
|
|
|
|
== Resources
|
|
|
|
* Related rule {S1130}
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Remove this "throws xxx" declaration
|
|
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
=== on 28 May 2015, 07:26:37 Nicolas Peru wrote:
|
|
I updated example with the case where exception cannot be thrown, otherwise LGTM
|
|
|
|
endif::env-github,rspecator-view[]
|