Przejdź do treści głównej
INF.04Języki i Składnia Programowania

Obsługa wyjątków: try, catch, throw, finally

Mechanizm sterowania przepływem programu w sytuacjach awaryjnych (błędach czasu wykonania) przy użyciu bloków try, catch (przechwytywanie), throw (rzucanie) i finally (zwalnianie zasobów).

Struktura obsługi wyjątków

Wyjątek (Exception) to obiekt reprezentujący błąd czasu wykonania (np. dzielenie przez zero DivideByZeroException, brak pliku FileNotFoundException, odwołanie do null NullReferenceException).

Słowa kluczowe i ich role:

  1. try: Blok kodu, w którym może wystąpić błąd czasu wykonania.
  2. catch (TypWyjatku ex): Blok przechwytujący i obsługujący błąd o określonym typie.
  3. throw: Instrukcja jawnego rzucenia (zgłoszenia) nowego wyjątku (throw new ArgumentException("Niepoprawny wiek");).
  4. finally: Blok kodu, który zawsze się wykona, niezależnie od tego, czy wystąpił błąd, czy funkcja zakończyła się poprawnie, a nawet czy w bloku try/catch wykonano return. Służy do zamykania plików, połączeń bazodanowych i zwalniania zasobów.
CSHARP
FileStream plik = null;
try {
    plik = File.OpenRead("dane.txt");
    // operacje na pliku
} catch (FileNotFoundException ex) {
    Console.WriteLine($"Brak pliku: {ex.Message}");
} catch (Exception ex) {
    Console.WriteLine($"Nieznany błąd: {ex.Message}");
} finally {
    // Blok finally wykona się ZAWSZE!
    if (plik != null) plik.Close();
}

Pułapki na egzaminie INF.04:

  • Blok finally wykonuje się ZAWSZE, bez względu na to, czy w bloku try wystąpił wyjątek, czy nie.

Chcesz sprawdzić to pojęcie w praktyce?

Przeszukaj pytania z oficjalnych arkuszy CKE powiązane z hasłem Obsługa wyjątków: try, catch, throw, finally lub rozpocznij trening.