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");
}Wyzwanie
ŁatwyUtwórz metodę o nazwie divideNumbers, która przyjmuje trzy argumenty:
- String (
num1) reprezentujący pierwszą liczbę - String (
num2) reprezentujący drugą liczbę - Liczbę całkowitą (
index) reprezentującą indeks tablicy
Metoda powinna:
- Utworzyć tablicę o rozmiarze 2
- Zapisać pod danym indeksem wartość całkowitą uzyskaną przez podzielenie sparsowanej wartości całkowitej num1 przez sparsowaną wartość całkowitą num2
- Zwrócić wartość pod danym indeksem
- 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));
}
}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
1Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DDodawanie i odejmowanie macierzyTablice postrzępioneTablice 3D i większeTypowe wzorce dla tablic 2DPodsumowanie — wszystko o tablicach2HashMap część 1
Czym jest HashMap?Deklarowanie HashMapDostęp do wartościSprawdzanie, czy klucz istniejeModyfikowanie słownikówPodsumowanie — HashMap3HashMap — część 2
Metody HashMapIterowanie za pomocą keySet()Iterowanie za pomocą entrySet()Zagnieżdżona HashMapPowtórka — zarządzanie magazynemPowtórka — operacje na HashMap6Zaawansowany przepływ sterowania
Instrukcje etykietująceWyrażenie switchDopasowywanie wzorcówKlauzule ochronnePowtórzenie — przepływ sterowania9Projekt — licznik unikalnych słów
Wprowadzanie i przechowywanie tekstuPrzetwarzanie słówPoćwicz samodzielnie: Kompilator Java online