Обработка исключений в C++
НАВИГАЦИЯ ПО СТРАНИЦЕ
Обработка исключений в C++ позволяет элегантно обрабатывать ошибки и исключительные ситуации в программе. Давайте рассмотрим основные концепции и примеры использования.
Базовая структура обработки исключений:
#include <iostream>
using namespace std;
int main() {
try {
// Код, где может возникнуть исключение
throw runtime_error("An error occurred!"); // Генерация исключения
}
catch (const exception& e) {
// Обработка исключения
cout << "Exception caught: " << e.what() << endl;
}
return 0;
}
В приведенном выше примере мы поместили код, который может вызвать исключение, в блок try. Если исключение произойдет, программа перейдет к соответствующему блоку catch, где будет выполнен код по обработке исключения.
Спецификация исключений :
#include <iostream>
using namespace std;
void myFunction() throw(int, double) {
throw 42; // Генерация исключения типа int
}
int main() {
try {
myFunction();
}
catch (int e) {
cout << "Exception caught: " << e << endl;
}
catch (...) {
cout << "Unknown exception caught." << endl;
}
return 0;
}
В функции myFunction мы указали, что она может бросить исключение типа int или double. В блоке catch в main мы перехватываем только исключения типа int, остальные обрабатываются блоком catch (...).
Использование стандартных исключений:
#include <iostream>
#include <stdexcept>
using namespace std;
int divide(int a, int b) {
if (b == 0) {
throw runtime_error("Division by zero");
}
return a / b;
}
int main() {
try {
int result = divide(10, 0);
cout << "Result: " << result << endl;
}
catch (const exception& e) {
cout << "Exception caught: " << e.what() << endl;
}
return 0;
}
В этом примере функция divide генерирует исключение типа runtime_error в случае деления на ноль. В блоке catch в main мы ловим это исключение и выводим сообщение.
Обработка исключений позволяет создавать устойчивые и безопасные программы, обрабатывая ошибочные ситуации и предотвращая аварийное завершение программы.