Introduction to the usage of PEAR_Exception
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.