Содержание
- 2. Препроцессор Страуструп пишет: "C++ создавался с целью избавить автора и его друзей от необходимости программировать на
- 3. Реализация языка С++ включает препроцессор с возможностями макроподстановки, условной трансляции включения указанных файлов. Для передачи заданий
- 4. Фазы препроцессорной обработки По определению существует несколько фаз препроцессорной обработки. В конкретной реализации фазы могут сливаться,
- 5. Макроопределение и макроподстановка Команда вида #define идентификатор строка-лексем называется макроопределением. Она указывает препроцессору, что надо произвести
- 6. Команда вида идентификатор ( идентификатор , … , идентификатор ) строка-лексем называется макроопределением с параметрами или
- 7. Операция # Если непосредственно перед параметром в строке замены идет лексема #, то при подстановке параметр
- 8. Операция ## Если в строке замены между двумя лексемами, одна из которых представляет параметр макроопределения, появляется
- 9. Макроопределение, которое в строке замены соседствует с ##, не подлежит подстановке, однако, результат конкатенации может использоваться
- 10. Область видимости макроимен и конструкция #undef После появления макроопределения идентификатор из него считается определенным и остается
- 11. Включение файлов Управляющая строка вида: #include приводит к замене данной строки на содержимое файла с указанным
- 12. Управление строками и команда error Для удобства написания программ, порождающих текст на С++, введена управляющая строка
- 13. Обработка ошибок
- 14. Программисты часто допускают ошибки, которые приводят к ненормальным состояниям, называемым ошибками. В целом, эти ошибки бывают
- 15. Синхронные исключения - это исключения во время выполнения, которые возникают из-за кода, написанного программистом, и они
- 16. Обработка синхронных исключений называется обработкой исключений. Обработка исключений связана с обнаружением исключений во время выполнения и
- 17. Предложение throw используется для создания исключения, которое будет поймано блоком catch. Синтаксис предложения throw выглядит следующим
- 18. Если возникает исключение и нет блока catch для обработки этого исключения, будет выполнена функция terminate (),
- 19. #include using namespace std; int main() { int a, b; cout cin>>> >a>>> >b; try {
- 20. При написании программ, если программист не знает, какое исключение может вызвать программа, можно использовать блок catch
- 21. #include using namespace std; int main() { int a, b; cout cin>>a>>b; try { if(b ==
- 22. В C++, если функция или вложенный try-блок не хотят обрабатывать исключение, он может повторно создать это
- 23. #include using namespace std; int main() { int a, b; cout cin>>> >a>>> >b; try {
- 24. Функция может объявить, какой тип исключений она может выдавать. Синтаксис для объявления исключений, которые выбрасывает функция,
- 25. #include using namespace std; void sum() throw (int) { int a, b; cout cin>>> >a>>> >b;
- 26. Вместо того, чтобы выбрасывать исключения из заранее определенных типов, таких как int, float, char и т.
- 27. #include using namespace std; class ZeroError { }; void sum() { int a, b; cout cin>>a>>b;
- 28. При наследовании, выбрасывая исключения производных классов, следует позаботиться о том, чтобы блоки catch с базовым типом
- 29. #include using namespace std; struct Base { }; struct Derived : public Base { }; int
- 30. #include using namespace std; struct Base { }; struct Derived : public Base { }; int
- 31. Вполне возможно, что исключения могут возникать в конструкторе или деструкторе. Если в конструкторе возникает исключение, память
- 32. #include using namespace std; class Divide { private: int *x; int *y; public: Divide() { x
- 33. catch(int) { delete x; delete y; cout throw; } } ~Divide() { try { delete x;
- 34. int main() { try { Divide d; float res = d.division(); cout } catch(...) { cout
- 35. Обработка исключений помогает программистам создавать надежные системы. (по материалам из https://www.startertutorials.com/blog) Обработка исключений отделяет код обработки
- 36. Базовый класс для стандартных исключений. Все объекты, создаваемые компонентами стандартной библиотеки, являются производными от этого класса.
- 37. #include #include struct ooops : std::exception { const char* what() const noexcept {return "Ura!\n";} }; int
- 38. Все исключения стандартной библиотеки наследуются от std::exception. На данный момент существуют следующие виды исключений: logic_error invalid_argument
- 39. Исключение определено в заголовочном файле std::bad_exception - это тип исключения в C++, которое выполняется в следующих
- 41. Скачать презентацию