
When an include is not surrounded by empty lines, its content is inlined on the same line as the adjacent content. That can lead to broken tags and other display issues. This PR fixes all such includes and introduces a validation step that forbids introducing the same problem again.
60 lines
1.5 KiB
Plaintext
60 lines
1.5 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Exceptions handlers (``++catch++``) are evaluated in the order they are written. Once a match is found, the evaluation stops.
|
|
|
|
|
|
In some contexts a ``++catch++`` block is dead code as it will never catch any exception:
|
|
|
|
* If there is a handler for a base class followed by a handler for class derived from that base class, the second handler will never trigger: the handler for the base class will match the derived class, and will be the only executed handler.
|
|
* When multiple ``++catch++`` blocks try to catch the same exception class, only the first one will be executed.
|
|
|
|
This rule raises an issue when a ``++catch++`` block catches every exception before a later ``++catch++`` block could catch it.
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,php]
|
|
----
|
|
class MyException extends Exception {}
|
|
class MySubException extends MyException {}
|
|
|
|
try {
|
|
doSomething();
|
|
} catch (MyException $e) {
|
|
echo $e;
|
|
} catch (MySubException $e) { // Noncompliant: MySubException is a subclass of MyException
|
|
echo "Never executed";
|
|
}
|
|
----
|
|
|
|
=== Compliant solution
|
|
|
|
[source,php]
|
|
----
|
|
class MyException extends Exception {}
|
|
class MySubException extends MyException {}
|
|
|
|
try {
|
|
doSomething();
|
|
} catch (MySubException $e) {
|
|
echo "Executed";
|
|
} catch (MyException $e) {
|
|
echo $e;
|
|
}
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::../highlighting.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::../comments-and-links.adoc[]
|
|
|
|
endif::env-github,rspecator-view[]
|