(отсюда)
// Константа для переключения способа обработки ошибок
define('IRB_ERROR_HANDLER', true);
// Устанавливаем Callbac функции для установки режима исключений
if(IRB_ERROR_HANDLER === true)
{ // Системные ошибки
set_error_handler('setAllException');
// Неотловленные исключения
set_exception_handler('setExceptionHandler');
}
// Callbac - функция для выброса исключений на системные ошибки
function setAllException($code, $message, $file, $line)
{
if(error_reporting() & $code)
throw new AllException($message, $code, $file, $line);
}
// Callbac - функция вместо блока catch
// Здесь можно навести красоту, вывести стеки и так далее
function setExceptionHandler($e)
{
$code = $e -> getCode();
switch($code)
{
case E_NOTICE :
echo '<strong>Notice:</strong> ';
break;
case E_WARNING :
echo '<strong>Warning:</strong> ';
break;
// И так далее
default :
echo 'Ошибка: ';
}
echo $e -> getMessage();
echo ' in ', $e -> getFile();
echo ' on line ', $e -> getLine();
}
// Создаем промежуточный класс - наследник
class AllException extends Exception
{
public function __construct($message, $code, $file, $line)
{
$this->file = $file;
$this->line = $line;
parent::__construct($message, $code);
}
}
не могу понять зачем делается запрос в родительский конструктор?: