Условие повторяемости цикла

147
08 июля 2019, 19:40

Цикл принимает пользовательский ввод в строку и парсит его, в случае неудачного парсинга или запроса на сервер по ScreenName - возвращает Эксепшн. Какое условие можно поставить циклу, чтобы он повторялся, пока пользователь не введет корректное значение и метод не вернет корректный ответ?

int? numberId;
while (true)
            {
            Console.WriteLine("Введите Id, либо ScreenName группы");
            var enterId = Console.ReadLine();
            numberId = taskLogic.IdTreatment(enterId);
                if(numberId != null)
                    break;
            }
public int? IdTreatment(string enterId)
    {
        if (int.TryParse(enterId, out int numberId))
        {
            Console.WriteLine("Id принят успешно");
            return (int?)numberId;
        }
        else
        {
            Console.WriteLine("Обнаружен ScreenName");
            numberId = (int)api.Utils.ResolveScreenName(enterId).Id.Value;
            return (int?)numberId;
        }
    }
Answer 1

Но повторюсь - это очень плохая практика - строить бизнес-логику на основе исключений.

int? numberId;
while (true)
{
    Console.WriteLine("Введите Id, либо ScreenName группы");
    var enterId = Console.ReadLine();
    numberId = taskLogic.IdTreatment(enterId);
    if(numberId != null)
        break;
}
public int? IdTreatment(string enterId)
{
    if (int.TryParse(enterId, out int numberId))
    {
        Console.WriteLine("Id принят успешно");
        return (int?)numberId;
    }
    else
    {
        try
        {
            Console.WriteLine("Обнаружен ScreenName");
            numberId = (int)api.Utils.ResolveScreenName(enterId).Id.Value;
            return (int?)numberId;
        }
        catch (Exception)
        {
             return null;
        }
    }
}
READ ALSO
Когда AutoResetEvent.WaitOne() без параметров возвращает false?

Когда AutoResetEvent.WaitOne() без параметров возвращает false?

Есть несколько перегрузок AutoResetEventWaitOne() Когда срабатывает сигнал signal

174
C#: Приведение рациональной дроби к строке

C#: Приведение рациональной дроби к строке

Пишу класс для бесконечных чисел с плавающей точкойОднако, конвертация в строку происходит неправильно

141
Touch узнать когда палец сменил направление

Touch узнать когда палец сменил направление

Как узнать если палец двигался и сменил направление то есть двигался в перед а потом начал назад

132
Как правильно спрятать ORM?

Как правильно спрятать ORM?

Допустим есть БД и взаимодействие с ней выполняется через какое-то ORM

135