Моя программа ждет ввода пользователем и, при необходимости, обработает ее. Мне нужно проверить вход пользователя, чтобы убедиться, что он выполняет определенные критерии, и если он не выполнит все эти критерии, он будет отклонен.Проверка корректности ввода данных для ошибок
Псевдо-код что-то вроде:
if (fulfills_condition_1)
{
if (fulfills_condition_2)
{
if (fulfills_condition_3)
{
/*process message*/
}
else
cout << error_message_3; //where error_message_1 is a string detailing error
}
else
cout << error_message_2; //where error_message_2 is a string detailing error
}
else
cout << error_message_1; //where error_message_3 is a string detailing error
Существует вероятность того, что число этих условий может увеличиться, и мне было интересно, если там был аккуратнее способ представления этого с помощью переключателя или что-то вроде что вместо множества каскадных if
утверждений.
Я знаю, что есть возможность использования
if (fulfills_condition_1 && fulfills_condition_2 && fulfills_condition_3)
/*process message*/
else
error_message; //"this message is not formatted properly"
но это менее полезно, чем первый, и не говорит, где проблема.
условия могут быть грубо расположены все большее значение, т.е. проверки condition_1
является более важным, чем проверка condition_3
, поэтому if
заявления делают работу - но есть лучший способ в целом для этого?
Исключения ..... –
Вы считали, что проверки с отрицательным состоянием связаны с попыткой-catch и классом исключений, который точно отражает условие, которое сработало с проблемой в первую очередь? – WhozCraig
Это зависит от того, насколько сложным будет ваш вход. Я бы создал DSL, чтобы объявить, как ввод действителен, и создать объекты, представляющие этот DSL, а затем сказать, чтобы подтвердить этот ввод. –