РНР
уже всё умеет из коробки.
Чтобы просто залогировать ошибку, не нужно никаких библиотек и хендлеров.
Функция save_error - это абсолютно бессмысленные телодвижения, которые повторяют то что уже есть в РНР
Чтобы ошибки логировались, надо - сюрприз! - написать в настройках одну строчку
log_errors=1
всё, больше ничего не надо
ошибки сами будут записывться в лог
без траев, кетчей, шатдаунов и прочей ерунды
И кстати
} catch (\Exception $e) {
save_error($e);
} catch (\Throwable $th) {
save_error($th);
}
- это отдельная бессмыслица.
Throwable уже включает в себя Exception