Мне не нравится идиома "while (true) с перерывом".Я нахожу более понятным в этом случае - у меня редко есть правила, которые применяются во всех случаях - ввести вспомогательную переменную, которая управляет циклом.
boolean repeat;
do {
repeat = false;
try {
...stuff...
}
catch (SomeException ex) {
... error stuff...
repeat = true;
}
while (repeat);
Это (а) делает завершение цикла более ясным, чем произвольноевыпрыгивает ('break') из цикла и (b) делает его тривиальным, когда вы обнаружите, что у вас есть другие причины для повторного выполнения тела цикла.