Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Обработка исключений C++:пример Try, Catch, Throw

Что такое обработка исключений в C++?

Обработка исключений в C++ предоставляет способ обработки непредвиденных обстоятельств, таких как ошибки времени выполнения. Поэтому всякий раз, когда возникает непредвиденное обстоятельство, управление программой передается специальным функциям, известным как обработчики.

Чтобы поймать исключения, вы помещаете некоторый участок кода под проверку исключений. Часть кода помещается в блок try-catch.

Если в этом разделе кода возникает исключительная ситуация, будет выдано исключение. Далее обработчик исключений возьмет на себя управление программой.

В случае отсутствия каких-либо исключительных обстоятельств код будет выполняться в обычном режиме. Обработчики будут игнорироваться.

Из этого руководства по C++ вы узнаете:

Зачем нужна обработка исключений?

Вот причина использования обработки исключений в C++:

Ключевые слова обработки исключений

Обработка исключений в C++ вращается вокруг этих трех ключевых слов:

Предположим, блок кода вызовет исключение. Исключение будет перехвачено методом, использующим ключевые слова try и catch. Блок try/catch должен окружать код, который может вызвать исключение. Такой код известен как защищенный код.

Синтаксис:

Команда try/catch использует следующий синтаксис:

01

Пример 1:

10 

Вывод:

Вот скриншот кода:

Пояснение кода:

  1. Включите файл заголовка iostream в программу, чтобы использовать ее функции.
  2. Включите векторный заголовочный файл в программу, чтобы использовать ее функции.
  3. Включите пространство имен std в программу в его классы, не вызывая его.
  4. Вызовите функцию main(). Логика программы должна быть добавлена ​​в ее тело.
  5. Создайте вектор с именем vec для хранения целочисленных данных.
  6. Добавьте элемент 0 к вектору с именем vec.
  7. Добавьте элемент 1 к вектору с именем vec.
  8. Комментарий. Он будет пропущен компилятором C++.
  9. Используйте оператор try, чтобы перехватить исключение. Символ { отмечает начало тела блока try/catch. Код, добавленный в тело, станет защищенным кодом.
  10. Попробуйте получить доступ к элементу, хранящемуся в индексе 2 (третий элемент) вектора с именем vec. Этот элемент не существует.
  11. Конец тела блока try/catch.
  12. Перехватить исключение. Возвращенное сообщение об ошибке будет сохранено в переменной ex.
  13. Вывести сообщение на консоль, если исключение перехвачено.
  14. Конец тела блока catch.
  15. При успешном выполнении программа должна возвращать значение.
  16. Конец тела функции main().

Пример 2:

28

Вывод:

Вот скриншот кода:

Пояснение кода:

  1. Включите файл заголовка iostream в программу, чтобы использовать ее функции.
  2. Включите пространство имен std в программу в его классы, не вызывая его.
  3. Создайте функцию с именем zeroDivision, которая принимает два целочисленных аргумента, x и y. Функция должна возвращать двойной результат.
  4. Используйте оператор if, чтобы проверить, равно ли значение переменной аргумента y 0. Символ { отмечает начало тела if.
  5. Сообщение, которое будет возвращено/отправлено, если y равно 0.
  6. Конец тела оператора if.
  7. Функция zeroDivision должна возвращать значение x/y.
  8. Конец тела функции zeroDivision.
  9. Вызвать метод main(). { отмечает начало этого метода.
  10. Объявите целочисленную переменную и присвойте ей значение 11.
  11. Объявите целочисленную переменную b и присвойте ей значение 0.
  12. Объявите двойную переменную c и присвойте ей значение 0.
  13. Используйте оператор try, чтобы перехватить исключение. Символ { отмечает начало тела блока try/catch. Код, добавленный в тело, станет защищенным кодом.
  14. Вызвать функцию zeroDivision и передать аргументы a и b, то есть 11 и 0. Результат этой операции будет сохранен в переменной c.
  15. Выведите значение переменной c на консоль.
  16. Конец тела блока try/catch.
  17. Перехватить исключение. Возвращенное сообщение об ошибке будет сохранено в переменной message.
  18. Распечатайте возвращенное сообщение об ошибке на консоли.
  19. Конец тела блока catch.
  20. При успешном выполнении программа должна возвращать значение.
  21. Конец тела функции main().

Стандартные исключения C++

C++ поставляется со списком стандартных исключений, определенных в классе . Они описаны ниже:

Исключение Описание std::exceptionЭто исключение и родительский класс всех стандартных исключений C++.std::bad_allocЭто исключение вызывается новым ключевым словом.std::bad_castЭто исключение вызывается dynamic_cast.std::bad_exceptionПолезное устройство для обработки непредвиденных исключений в программах C++.std::bad_typeidИсключение, вызванное typeid.std::logic_errorЭто исключение теоретически можно обнаружить, прочитав code.std::domain_errorЭто исключение, вызванное использованием математически недопустимого домена.std::invalid_argumentИсключение, вызванное использованием недопустимых аргументов .std::length_errorИсключение, вызванное после создания большого std::string.std::out_of_range, созданное в методе.std::runtime_errorЭто исключение, которое невозможно обнаружить при чтении кода.std::overflow_errorЭто исключение возникает после возникновения математического переполнения.std::range_errorЭто исключение возникает, когда вы пытаетесь сохранить значение вне диапазона.std::underflow_errorИсключение возникает после возникновения m атематический недолив.

Пользовательские исключения

Класс C++ std::exception позволяет нам определять объекты, которые могут быть выброшены как исключения. Этот класс был определен в заголовке . Класс предоставляет нам виртуальную функцию-член с именем what.

Эта функция возвращает завершающуюся нулем последовательность символов типа char *. Мы можем перезаписать его в производных классах, чтобы иметь описание исключения.

Пример:

32

Вывод:

Вот скриншот кода:

Пояснение кода:

  1. Включите файл заголовка iostream в нашу программу. Мы будем использовать его функции, не получая ошибок.
  2. Включите файл заголовка исключения в нашу программу. Мы будем использовать его функции как то без ошибок.
  3. Включите пространство имен std в нашу программу, чтобы использовать его классы, не вызывая его.
  4. Создайте новый класс с именем newException. Этот класс наследует класс исключений C++.
  5. Начало тела класса.
  6. Перезаписать виртуальную функцию-член what(), определенную в файле заголовка исключения. Затем мы опишем наше собственное исключение, новое исключение.
  7. Запустите определение нового исключения.
  8. Сообщение, которое будет возвращено, если будет перехвачено новое исключение.
  9. Конец определения нового исключения.
  10. Конец тела класса newException. newex — это имя, которое будет использоваться для перехвата нашего нового исключения, после чего будет вызвано новое исключение.
  11. Вызовите функцию main(). Логика программы должна быть добавлена ​​в ее тело. { отмечает начало его тела.
  12. Используйте оператор try, чтобы пометить код, в котором нужно пометить исключение. Символ { отмечает начало тела блока try/catch. Код, окруженный этим, станет защищенным.
  13. Сбросьте исключение newex, если оно перехвачено.
  14. Конец тела попытки.
  15. Используйте оператор catch, чтобы перехватить исключение. Сообщение об ошибке исключения будет храниться в переменной ex.
  16. Распечатайте сообщение об ошибке исключения на консоли.
  17. Конец тела оператора catch.
  18. При успешном выполнении программа должна вернуть значение.
  19. Конец тела функции main().

Обзор:

  • Обработка исключений в C++ позволяет обрабатывать ошибки времени выполнения.
  • Ошибки выполнения — это ошибки, возникающие во время выполнения программы.
  • Обработка исключений помогает справиться с любыми непредвиденными обстоятельствами в вашей программе.
  • При возникновении непредвиденных обстоятельств управление программой передается обработчикам.
  • Чтобы перехватить исключение, вы помещаете часть кода в блок try-catch.
  • Ключевое слово throw помогает программе создавать исключения, помогая программе справиться с проблемой.
  • Ключевое слово try помогает определить блок кода, для которого будут активированы определенные исключения.
  • Мы можем перезаписать функцию what() файла заголовка исключения, чтобы определить наши исключения.

Язык C

  1. С++ Комментарии
  2. Обработка исключений Python с использованием оператора try, exclude и finally
  3. Обработка исключений Java
  4. Java попробуй... поймай
  5. Оператор C++ Switch Case с ПРИМЕРОМ
  6. C++ динамическое выделение массивов с примером
  7. Структура С++ с примером
  8. std::list в C++ с примером
  9. Разница между структурой и классом:объяснение на примере C++
  10. 15 лучших C++ IDE:бесплатный редактор для Windows | Компилятор | 2021