PHP's ErrorException class
Did you know PHP has an
ErrorException class that solves the problem of throwing exceptions
from an error handler function?
What problem?
Well, if you throw a normal Exception from such a handler, the file name and
line number of the Exception will be set to match the file and line where the
Exception was actually thrown and not the place where the error happened.
There was no way to extend an Exception class and provide the correct information
as Exception's $file and $line properties are private and there are no
setters for them, only getters.
ErrorException solves this problem by overriding the Exception constructor,
allowing us to pass up to five arguments. From these five arguments, four have
the same meaning as the four arguments passed to the error handler function:
$errno, $errstr, $errfile, $errline. By passing along these arguments to
the ErrorException constructor we get a more meaningful exception from our error
handler.