while(true) { … break; … continue; } の間違いだろうな

保守性を考えるなら
bool retry = false; do { ... } while(retry);
か