Я пытаюсь использовать try, throw and catch
в куске кода, чтобы проверить, хороший ли вход. Это то, что у меня есть до сих пор;Как использовать try, throw и catch?
while(loop > 0){
try{
cout << "Please input the x and y centre point: separated by a space" << endl;
cin >> Cx >> Cy;
if(isalpha(Cx)){cin.clear(); cin.ignore();throw 1;}
if(isalpha(Cy)){cin.clear(); cin.ignore();throw 2;}
cout << "Please input the side length" << endl;
cin >> side1;
if(isalpha(side1)){cin.clear(); cin.ignore();throw 3;}
if(side1 <= 0){cin.clear(); cin.ignore();throw 4;}
loop = 0;
}
catch(int err){
if(err == 1){cout << "X center co-ordinate should be a number" << endl;}
if(err == 2){cout << "Y center co-ordinate should be a number" << endl;}
if(err == 3){cout << "The length should be a number" << endl;}
if(err == 4){cout << "The length should be greater than 0" << endl;}
}
}
Когда я запускаю это и введите o 0
для центральной точки программа по-прежнему выводит Please input the side length
, а затем The length should be greater than 0
и, наконец, возвращается назад, чтобы попросить новую точку центра.
Как это изменить, чтобы правильно считывать сообщение об ошибке до линии боковой длины (в идеале линия боковой длины не выводится)?
Благодаря
Я новичок в использовании try, throw and catch
и от того, что я прочитал это не может быть правильным применение его, но я просто хочу попробовать его.
какой язык программирования вы используете? – MZaragoza
Можете ли вы написать название вопроса, которое лучше отражает то, что вы просите? – djechlin
Есть причина, почему их называют исключениями. Если вам нужно обрабатывать типы (-ы) исключений, которые выходят из-под вашего контроля/ожидания, тогда вы будете использовать try/catch. Это не относится к проверке ввода пользователя, потому что вы можете ожидать, что они будут вводить, действительны или иначе. Просто напишите процедуру проверки с возвратом сообщения/кода ошибки. –