В одном классе сосредоточены методы обработки и ошибок(set error handler) и исключений(set exception handler)
namespace System\Core\Errors;
use \ErrorException;
use \Throwable;
class ErrorTrap
{
public function __construct()
{
set_exception_handler([__CLASS__, 'exceptionHandler']);
set_error_handler([__CLASS__, 'errorHandler']);
}
public function exceptionHandler(Throwable $exception)
{
//Тут пишется лог исключения (Для error отдельный лог как и для исключений)
//И отправка на e-mail/sms-gate информации о сбое
}
public function errorHandler($severity, $msg, $file, $line)
{
if (!(error_reporting() & $severity)) return;
throw new ErrorException($msg, 0, $severity, $file, $line);
}
}
Подозреваю что это оочень криво, ибо смешивается логика работы с ошибками и исключениями в одном классе(или я не прав?). Нужно ли их раскидывать по классам, чтоб соблюсти хоть немного принцип единой ответственности?
И можно ли вообще ошибки преобразовывать таким образом в исключения(наверное да, но не уверен)?
И еще, с появлением Throwable нужно ли плодить такое baseException/NotFoundException...(если да, то через через имплемент Throwable?)?