Для парсинга методом рекурсивного спуска исключения не нужны. И без них этот метод хорошо работает.

Нужно понимать, что исключение - это по сути goto и всё, что из этого следует.

Исключения могут быть полезны для перехвата ошибок в сторонних компонентах, которые могут просто упасть, не вернув кода ошибки.