Menu
Coddy logo textTech

Podstawy try-catch

Część sekcji Logika i przepływ sterowania ścieżki Java w Coddy. Lekcja 40 z 59.

Bloki try-catch w Java służą do obsługi wyjątków (błędów), które mogą wystąpić podczas wykonywania programu. Kod, który może zgłosić wyjątek, umieszcza się w bloku try, a kod obsługujący błędy — w bloku catch.

Oto podstawowa struktura bloku try-catch:

try {
   // Kod, który może zgłosić wyjątek
} catch (ExceptionType e) {
   // Kod obsługujący wyjątek
}

Zobaczmy, jak to działa w przypadku Integer.parseInt(), która konwertuje String na liczbę całkowitą:

String text = "abc";
try {
   int number = Integer.parseInt(text);
   System.out.println(number);
} catch (NumberFormatException e) {
   System.out.println("Error: Not a valid number");
}

Po wykonaniu powyższego kodu wynik to:

Error: Not a valid number

Po pojedynczym try może występować kilka bloków catch, po jednym dla każdego typu wyjątku. Java uruchamia pierwszy blok, którego typ pasuje do rzuconego wyjątku:

try {
   int number = Integer.parseInt(text);
   System.out.println(10 / number);
} catch (NumberFormatException e) {
   System.out.println("Error: Not a valid number");
} catch (ArithmeticException e) {
   System.out.println("Error: Division by zero");
}
challenge icon

Wyzwanie

Łatwy

Utwórz metodę o nazwie divideNumbers, która przyjmuje trzy argumenty:

  1. String (num1) reprezentujący pierwszą liczbę
  2. String (num2) reprezentujący drugą liczbę
  3. Liczbę całkowitą (index) reprezentującą indeks tablicy

Metoda powinna:

  1. Utworzyć tablicę o rozmiarze 2
  2. Zapisać pod danym indeksem wartość całkowitą uzyskaną przez podzielenie sparsowanej wartości całkowitej num1 przez sparsowaną wartość całkowitą num2
  3. Zwrócić wartość pod danym indeksem
  4. Obsłużyć wszystkie możliwe wyjątki, zwracając zamiast tego odpowiedni komunikat o błędzie

Zwracane komunikaty powinny być następujące:

  • Dla NumberFormatException: "Error: Invalid number format"
  • Dla ArithmeticException: "Error: Division by zero"
  • Dla ArrayIndexOutOfBoundsException: "Error: Invalid array index"
  • W przypadku powodzenia: zwrócić wynik jako ciąg znaków

Spróbuj swoich sił

import java.util.Scanner;

public class Main {
    public static String divideNumbers(String num1, String num2, int index) {
        // Wpisz tutaj swój kod
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String num1 = scanner.nextLine();
        String num2 = scanner.nextLine();
        int index = Integer.parseInt(scanner.nextLine());
        
        System.out.println(divideNumbers(num1, num2, index));
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator Java online