В PHP 7+ иерархия ошибок:
Throwable (interface)
├── Error (внутренние ошибки PHP)
│ ├── TypeError
│ ├── ValueError
│ ├── ArithmeticError
│ ├── DivisionByZeroError
│ └── ...
└── Exception (пользовательские исключения)
├── RuntimeException
├── LogicException
├── InvalidArgumentException
└── ...Ошибки (Error) - критические проблемы: вызов несуществующего метода, неправильный тип аргумента. Исключения (Exception) - предсказуемые ситуации: файл не найден, невалидные данные.
Оба ловятся через try/catch (Throwable). Но Error обычно сигнализирует о баге в коде, Exception - о предсказуемой проблеме.