Вы можете сделать это именно так, как вы предлагаете, используя рекурсию. Я не вижу, в чем проблема. Лично, использование цикла обычно проще, чем использование рекурсии. Однако я бы не поймал все исключения. Скорее всего, вы захотите обрабатывать разные исключения по-разному.
private void one() {
while(true) {
try {
//Valid data
break;
}catch(InvalidArgumentException e) { // or what ever you expect.
two();
}
}
}
private void two() {
//Process data with another input
//On entry,
}
или даже
private void one() {
while(true) {
try {
//Valid data
break;
} catch(InvalidArgumentException e) { // or what ever you expect.
// Process data with another input
// On entry,
}
}
}