Yeah, I'd probably redo it with an actual condition. That way, intent looks clear and is not dependent on internal code to `break`, `continue`, etc. var retryCount = 0; var success = false; while(!success && retryCount < 3) { try { AttemptToConnect(); success = true; } catch(TimeoutException tex) { retryCount++; if (retryCount == 3) { throw; //or handle error and break/return } } }