... > C++ > Обработка исключений в...

Обработка исключений в 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 мы ловим это исключение и выводим сообщение.

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