Using PEAR_Exception for advanced error handling in PHP 5+
Synopsis
Introduction to the usage of PEAR_Exception
Introduction
This class is available as part of the PEAR package. Features include:
-
Nestable exceptions (
<?php throw new PEAR_Exception($msg, $prev_exception); ?>
)
-
Subject/Observer pattern, triggered when an exception is instantiated
-
Clear, detailed and attractively formatted error messages
-
Extra context information available compared to built-in Exception. For instance, a cause of the exception (PEAR_Error/PEAR_ErrorStack/another Exception).
-
Exception cause can be a PEAR_Error object, PEAR_Exception object or an array of mixed PEAR_Exceptions/PEAR_ErrorStack warnings
-
callbacks for specific exception classes and their children
Usage example:
<?php
require_once 'PEAR/Exception.php';
class Test {
function foo() {
throw new PEAR_Exception('Error Message', ERROR_CODE);
}
}
function myLogger($pear_exception) {
echo $pear_exception->getMessage();
}
// each time a exception is thrown the 'myLogger' will be called
// (its use is completely optional)
PEAR_Exception::addObserver('myLogger');
$test = new Test;
try {
$test->foo();
} catch (PEAR_Exception $e) {
print $e;
}
?>
API documentation is documented in the documentation for the PEAR package generated by phpDocumentor. The class is very simple, examine the source in the PEAR package to get a better idea of how it works.