rspec/rules/S5713/php/rule.adoc

61 lines
1.4 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

== Why is this an issue?
Repeating an exception class in a single ``++catch++`` clause will not fail but it is not what the developer intended. Either the class is not the one which should be caught, or this is dead code.
Having a subclass and a parent class in the same ``++catch++`` clause is also useless. It is enough to keep only the parent class.
This rule raises an issue when an exception class is duplicated in a ``++catch++`` clause, or when an exception class has a parent class in the same ``++catch++`` clause.
=== Noncompliant code example
[source,php]
----
try {
throw new CustomException();
} catch(CustomException | Exception $e) { // Noncompliant. CustomException inherits from Exception
   echo $e->message();
}
try {
   throw new CustomException();
} catch(Exception | Exception $e) { // Noncompliant.
   echo $e->message();
}
----
=== Compliant solution
[source,php]
----
try {
throw new CustomException();
} catch(Exception $e) {
echo $e->message();
}
try {
throw new CustomException();
} catch(CustomException $e) {
echo $e->getCustomMessage();
} catch(Exception $e) {
echo $e->message();
}
----
== Resources
* RFC - https://wiki.php.net/rfc/multiple-catch[Catching Multiple Exception Types]
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
include::../message.adoc[]
include::../highlighting.adoc[]
endif::env-github,rspecator-view[]