Blok catch

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

Co to jest blok catch?

Blok catch służy do przechwytywania i obsługi wyjątków, które wystąpiły w bloku try. To właśnie w catch definiuje się, co program ma zrobić po wykryciu błędu zamiast zakończyć działanie w niekontrolowany sposób.

Najczęściej catch występuje razem z try i opcjonalnie finally:

try {
    int wynik = 10 / 0;
} catch (ArithmeticException e) {
    System.out.println("Wystąpił błąd: " + e.getMessage());
} finally {
    System.out.println("Koniec operacji");
}

Rola poszczególnych elementów

  • try – zawiera kod, w którym może wystąpić wyjątek
  • catch – przechwytuje wyjątek i pozwala go obsłużyć
  • finally – wykonuje się niezależnie od tego, czy wyjątek wystąpił
  • throw – służy do rzucania wyjątku, a nie do jego obsługi

Jak działa catch?

Jeżeli w bloku try pojawi się wyjątek, program przerywa wykonywanie dalszych instrukcji w try i przechodzi do pasującego bloku catch.

Przykład:

try {
    String tekst = null;
    System.out.println(tekst.length());
} catch (NullPointerException e) {
    System.out.println("Próba użycia pustego obiektu");
}

Ważne zasady

  • catch musi być powiązany z try
  • można użyć wielu bloków catch dla różnych typów wyjątków
  • należy przechwytywać możliwie konkretne wyjątki, np. ArithmeticException, a nie od razu ogólny Exception

Przykład wielu bloków:

try {
    // kod
} catch (ArithmeticException e) {
    System.out.println("Błąd arytmetyczny");
} catch (NullPointerException e) {
    System.out.println("Błąd pustej referencji");
}

Na egzaminie

Jeśli pytanie brzmi, w której sekcji definiuje się obsługę wyjątku wygenerowanego przez aplikację, poprawną odpowiedzią jest catch, ponieważ to ten blok zawiera instrukcje reagujące na błąd.