try-catch w C++

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

try-catch to podstawowy mechanizm obsługi wyjątków w języku C++. Pozwala oddzielić kod, w którym może wystąpić błąd, od kodu odpowiedzialnego za jego obsługę.

Podstawowy schemat

try {
    // kod, który może zgłosić wyjątek
}
catch (typ_wyjatku nazwa) {
    // obsługa wyjątku
}

W pytaniach egzaminacyjnych często stosuje się uproszczony zapis:

try { kod } catch { obsługa }

W rzeczywistym kodzie C++ blok catch zwykle zawiera typ przechwytywanego wyjątku, np. int, std::exception albo ....

Przykład

#include <iostream>
#include <stdexcept>
using namespace std;

int main() {
    try {
        throw runtime_error("Blad programu");
    }
    catch (const runtime_error& e) {
        cout << "Wyjatek: " << e.what();
    }

    return 0;
}

Najważniejsze elementy

  • try - obejmuje kod, który może zgłosić wyjątek,
  • throw - zgłasza wyjątek,
  • catch - przechwytuje i obsługuje wyjątek.

Czego nie używa się w C++?

W standardowym C++ nie stosuje się konstrukcji:

  • handle - nie jest słowem kluczowym obsługi wyjątków w C++,
  • except - kojarzy się raczej z innymi językami, np. Pythonem,
  • finally - występuje w językach takich jak Java czy C#, ale nie w standardowym C++.

Dlatego prawidłowy szkielet obsługi wyjątków w C++ opiera się na parze try oraz catch.