51 lines
1.1 KiB
Plaintext
51 lines
1.1 KiB
Plaintext
Instances of classes that do not derive from the "Throwable" interface cannot be used in a PHP "throw" statement.
|
|
|
|
|
|
Many built-in exceptions such as "Exception" and the SPL exception classes do implement the "Throwable" interface and can be extended when creating custom exceptions.
|
|
|
|
|
|
This rule raises an issue when an instance of a class that does not implement the "Throwable" interface is used in a "throw" statement .
|
|
|
|
== Noncompliant Code Example
|
|
|
|
[source,php]
|
|
----
|
|
class NoThrowable {}
|
|
|
|
throw new NoThrowable(); // Noncompliant
|
|
----
|
|
|
|
== Compliant Solution
|
|
|
|
[source,php]
|
|
----
|
|
<?php
|
|
|
|
class SomeThrowable implements Throwable {
|
|
// Implementation of the Throwable methods
|
|
}
|
|
|
|
throw new SomeThrowable(); // Compliant
|
|
|
|
class SomeCustomException extends Exception {}
|
|
|
|
throw new SomeCustomException(); // Compliant{code}
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::message.adoc[]
|
|
|
|
include::highlighting.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::../comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|