Published on 8 Oct 2010. Tagged with php.
<?php
class ErrorController
{
public function errorAction(Exception $exception)
{
echo '<h2>There was an error</h2>'
. '<pre>' . $exception . '</pre>';
}
}
$err = new ErrorController();
// Reroute all errors to our controller
set_exception_handler(array($err, 'errorAction'));
set_error_handler(
function ($errno, $errstr, $errfile, $errline, array $errcontext = null)
{
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
});
// Let's test it out
error_reporting(-1);
try {
throw new Exception('Gonna catch this');
} catch (Exception $e) {
// Catching errors works in the normal way
}
// Test 1 (default exception, comment the following line to enable Test 2)
throw new Exception('Something went wrong');
// Test 2 (default warning, will be transformed to an Exception and handled by
// the controller)
echo 1/0;