Многое зависит от того, насколько исключительны ошибки проверки, насколько важно быть корректным.
Если ваши ошибки валидации редки, серьезны или фатальны, когда они происходят, я бы использовал исключения или даже ошибки AssertionErrors. Большинство синтаксических анализаторов используют исключения, и они указывают, что невозможно продолжить обработку.
Если ваш сбой проверки ожидается как при обычных операциях и не означает, что вы не можете продолжить обработку, я бы предложил использовать шаблон посетителя или вернуть список проблем (который может быть пустым)