Sposoby obsługi wyjątków

Jednym za sposobów na obsługę wyjątków jest wykorzystanie bloku try-catch. Polega to na próbie przechwycenia/”złapania” wyjątku i na wykonaniu kodu w bloku catch. Blok try-catch przedstawie na podstawie RunTimeExcetion: InputMismatchException.

Na początku wywołujemy metodę która prosi użytkownika o podanie liczby. Następnie w bloku try umieściliśmy ten element programu który może wywołać wyjątek poprzez podanie błędnego typy danych np zamiast liczby użytkownik poda literę lub słowo. W bloku catch w nawiasach (został umieszczony konkretny już wyjątek) odpowiedzialny za tego typu sytuacje. Następnie w klamrach “{ }” zostały umieszczone instrukcje co co ma się wydarzyć gdy ów wyjątek wystąpi i zostanie przechwycony.

public static void main(String[] args) {

  Scanner input = new Scanner(System.in);
  System.out.println("Wpisz cyfrę: ");
    try {
    input.nextInt();
  } catch (InputMismatchException ex) {
   System.err.println("Nie wprowadziełeś cyfry");
 
  System.out.println(ex);
   }
  input.close();
}
Otrzymamy wynik jak poniżej:

Za pomocą metody System.err.println na konsoli została wyświetlona informacja skierowana do użytkownika systemu. To dzięki err ta wiadomości został wyświetlona na czerwono. W metodzie tej możemy zdefiniować informacje jaką chcemy przekazać odbiorcy. Natomiast dzięki metodzie System.out.println(ex) – została wyświetlona standardowa informacja na temat zaistniałego błędu którą niesie ze sobą wyjątek InputMismatchException.

Jednak to nie wszystko. Blok catch można jeszcze rozbudować o ex.printStackTrace(); Pozwala ona na wyświetlenie śladu stosu. Metoda ta jest dziedziczona z klasy Throwable. Stacktrace pozwala na znalezienie krok po kroku miejsca gdzie wystąpił problem. Dzięki temu w konsoli można zobaczyć stos wywołać w raz z informacjami w których wierszach i klasach wyjątek powstał:

Satcktrace

Warto zaznaczyć że Stacktrace się ie pojawia jeśli dany wyjątek nie jest obsługiwany. Wówczas program kończy swoje działanie.

Leave a Comment

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *