Можно ли каким-то образом отловить ошибки уровня parser и syntax?
Можно, если эта ошибка не в индексном файле. Отлавливаются также, как и остальные.
Где отлавливать исключения, внутри методов, то есть при описании класса, или оборачивать весь код вызовов в try?
Оба. Обычно есть один глобальный обработчик и несколько локальных. Если произошел какой-то серьезный сбой и приложение не может продолжить работу - исключение никто не ловит и оно обрабатывается глобальным обработчиком, который уведомляет пользователя об ошибке и пишет лог.
А если ничего критичного не произошло и ты можешь продолжить работу - то ловишь исключение в том месте, с которого собираешься продолжать работу.