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
throw new Exception(); // Noncompliant
throw new InvalidArgumentException();
throw new UnexpectedValueException();