Не надо так вообще делать.
Нельзя строить бизнес-логику на исключениях. Выбрасывание исключения - это очень дорогая операция. И поэтому она должна быть исключительной, то есть не нормальной для работы программы.
Метод валидации должен возвращать код ошибки валидации (в простейшем случае - true/false, в более сложном - enum { OK, AGE_DENIED, PERMISSION_DENIED, ....}, в сложном - объект с дополнительными полями(в джаву как раз sealed class'ы завезли).
Выше по стеку(в твоём случае - в main) должна быть проверка и уже реакция, принты и тд. Сам метод валидации не должен ничего печатать.
Не надо хранить ничего вот в статике. Это дурной тон, и неудобно. Максимально быстро уходи от статики как-то так:
class App {
public static void main (args){
new App(args).run();
}
private void run(args) {
//.... твой код
}
}