> писать ошибки в лог - это предназначение функции error_log, а предназначение trigger_error - обработка ошибок
об чём и спич. trigger_error кроме своей дефолтной функции "запись в ошибки в лог" позволяет подцепить и специальные обработчики для отсылки админу мыла, смс, джаббер-сообщения и ещё чего в том же духе. при этом срабатывает он в случае ручной генерации ошибки и в случае если это делает интерпретатор.
> Точно такое же предназначение и у Exceptions, только они справляются с ним лучше.
у них другая задача. исключения предназначены для уведомления высокоуровневого кода о том почему данный код _не_ _смог_ отработать _полностью_. а ошибки - для уведомления программиста о том, почему данный код _отработал_ _не_ _так_ как хотел.