rspec/rules/S2979/java/rule.adoc

82 lines
1.5 KiB
Plaintext
Raw Permalink Normal View History

== Why is this an issue?
2021-04-28 16:49:39 +02:00
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
2021-04-28 16:49:39 +02:00
2022-02-04 17:28:24 +01:00
[source,java]
2021-04-28 16:49:39 +02:00
----
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
2021-04-28 16:49:39 +02:00
2022-02-04 17:28:24 +01:00
[source,java]
2021-04-28 16:49:39 +02:00
----
@Test
public void testMethod1() throws MyException {
foo();
}
@Test
public void testMethod2() {
}
@Test
public void testMethod3()throws Throwable {}
@Test
public void testMethod4() {}
----
== Resources
2021-04-28 16:49:39 +02:00
* 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[]