If you throw a general exception type, such as ErrorException, RuntimeException, or Exception in a library or framework, it forces consumers to catch all exceptions, including unknown exceptions that they do not know how to handle.


Instead, either throw a subtype that already exists in the Standard PHP Library, or create your own type that derives from Exception.

== Noncompliant Code Example

[source,php]
----
throw new Exception();  // Noncompliant
----

== Compliant Solution

[source,php]
----
throw new InvalidArgumentException();
// or
throw new UnexpectedValueException();
----

include::../see.adoc[]

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]
