До PHP 7 фатальные ошибки нельзя было перехватить. С PHP 7 введен интерфейс Throwable:
try {
$result = call_to_undefined_function();
} catch (Error $e) {
echo "Ошибка PHP: " . $e->getMessage();
} catch (Exception $e) {
echo "Исключение: " . $e->getMessage();
} catch (Throwable $e) {
echo "Любая ошибка: " . $e->getMessage();
}Нельзя создать класс, реализующий Throwable напрямую - нужно наследовать Error или Exception.