Код ошибок не вызывает, однако, при запуске кода - он даже не ждет пока пользователь введет значение и просто закрывается. Как это исправить? Так же интересует: обязательно ли (...) в catch блоке, или нужно словить какой-то определенный exception?
void d() {
int f;
try {
std::cin>>f;
} catch(...) {
if(f!=1 | f!=2 | f!=3) {
std::cin>>f;
}
}
}
Скорее всего у вас какой-то мусор попадает в cin
с прошлого ввода или вывода, используйте
cin.ignore();
перед чтением строки.
Оператор catch
сработает только в том случае, если будет выброшено исключение, скорее всего сам cin
его не вызовет.
А для того чтобы он точно вызвался нужно его выбросить самостоятельно с помощью throw
.
void d() {
int f;
try {
std::cin.ignore()
std::cin>>f;
if(f!=1 || f!=2 || f!=3){
throw(f);
}
} catch(...) {
std::cout<<"Exception is occurred";
}
}
1) Поставьте галку Run in terminal
2) Как вам уже скаазли if(f!=1 | f!=2 | f!=3)
выполянет побитовое or. А вам, скорее всего, нужно логическое - ||
3) Но даже правильно записанное условие смысла не имеет if(f!=1 || f!=2 || f!=3)
. Оно всегда дает true
и , возможно, какой-то ваш код из-за этого не никогда не выполнится(ветка else
?). О чем вас и предупреждает статический анализатор или компилятор. Возможно вам нужно логическое and - &&
4) iostream по-умолчанию не бросает исключения. Чтобы включить это поведение нужно иcпользовать std::basic_ios<CharT,Traits>::exceptions
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Слева требуемы результат, справа как получается у меня:
Я недавно в программировании, и у меня возник вопросЯ нашел подходящую модалку в инете которую я скопировал и вставил но не знаю как привязать...