Когда в C++ встречается исключение, программа автоматически завершается при ее обнаружении. Есть ли способ, который, если бы исключение попало в цикл, я мог бы просто пропустить остальную часть цикла и перейти прямо к следующей итерации?C++ - Продолжение цикла while после исключения
ответ
Ну, в первую очередь, если этот отрезанный код ТОЧНО, как вы его скопировали, он имеет некоторые синтаксические ошибки. Вот как это должно быть написано:
int main() {
...
Person *p = new Person("Neo");
...
string in;
while(cin >> in) {
if (in == "q") {
break;
}
else if (in == /*One of the eight directions North ... Northwest*/) {
p->advance(in);
} //this bracket here ends the if. after the parentheses, nothing else will execute
else {
cerr << "Input one of the eight directions" < endl;
}
}
}
Так что да, если я правильно понял вашу проблему, добавив, что закрывающая скобка должна решить. Я надеюсь, что это то, что вам нужно, и что было полезно
Единственной синтаксической ошибкой является отсутствующая точка с запятой после 'p-> printBoard()'. Устранение вызовов 'system (" clear ")' и 'p-> printBoard()' не решает проблему. –
Это было не единственное, что я изменил. Хотя это и не было технически неверным, я изменил второй «if» на «else if» и комментарий «один из восьми ....» в комментарий/* * /, поскольку он менял открытый брэкет –
Существует несколько способов решения этой проблемы.
Создайте функцию-член, которая проверяет, действителен ли переход до его создания. Вызывающий код должен будет вызвать эту функцию перед вызовом
advance
и только позвонитьadvance
, если это действие действительно.Выполнение функции-члена
advance
возвращает значение, указывающее, была ли продвинута позиция игрока. Вызывающий код должен будет проверить возвращаемое значение, чтобы решить, следует ли печатать плату или печатать сообщение типа «попробуй еще раз».Выполнение функции члена
advance
вызывает исключение, если перемещение недействительно. Вызывающий код должен поймать исключение.
Существует множество других способов решения этих проблем.
- 1. Продолжение цикла while после ошибки в R
- 2. Python - Продолжение после исключения в точке исключения
- 3. Как разбить продолжение вложенного цикла for внутри цикла while?
- 4. C производительность кода цикла [продолжение]
- 5. Продолжение выполнения после исключения в java
- 6. Try-Catch внутри цикла while после первого исключения
- 7. Резюме цикла после пойманного исключения
- 8. Продолжение и исключения Tpl?
- 9. Код не продолжается после цикла while-while?
- 10. Добавление цикла while для проверки и исключения
- 11. JOptionPane внутри цикла while, показывающего после цикла while, завершается
- 12. Пустой массив после цикла while
- 13. Программа останавливается после цикла while
- 14. Показать результат после цикла while
- 15. C++ Для цикла внутри цикла while
- 16. преобразование для цикла while while C#
- 17. Форма подает продолжение цикла
- 18. Продолжение цикла при ошибке
- 19. Перерыв и продолжение (C)
- 20. Возвращение исключения после использования цикла
- 21. Программа перестает работать после цикла while
- 22. Продолжение в отладчике Visual Studio после возникновения исключения
- 23. while цикл не выполняется после цикла for
- 24. C++ while значение кода цикла
- 25. Как избежать цикла while? C++
- 26. c openmp - распараллеливание цикла while
- 27. Непонимание цикла while() в C++
- 28. Почему мой код останавливается после цикла while?
- 29. Продолжение цикла из блока исключений
- 30. C# Параллельный для исключения индекса цикла после удаления элемента
Можете ли вы опубликовать код функции advance(). – Winter
Поместите еще один цикл «if», который проверяет, есть ли «в! =« Юг »- и помещает два оператора в состояние, чтобы оно выполнялось, только если« in »не равно югу. – Maertin
Исключения обрабатываются блоками 'try'' catch'. Я не могу распознать их в вашем коде. –