Obsługa wyjątków: try, catch i finally
Wyjatki i petla for-each - Podstawy Javy (Java)
Podstawowe elementy obsługi wyjątków: try - blok kodu, który może generować wyjątki catch - blok obsługujący wyjątki finally - blok wykonywany zawsze throw - rzucanie wyjątku throws - deklaracja wyjątków metody Rodzaje wyjątków: Checked Exceptions (np. IOException) Muszą być obsłużone lub zadeklarowane Dziedziczą z Exception Unchecked Exceptions (np. RuntimeException) Nie wymagają jawnej obsługi Dziedziczą z RuntimeException Dobre praktyki: Obsługuj konkretne wyjątki Używaj try-with-resources dla zasobów Nie ignoruj wyjątków Loguj informacje o błędach Zachowuj hierarchię wyjątków
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 1. Podstawowy blok try-catch
System.out.println("=== Przykład 1: Podstawowy try-catch ===");
try {
int result = divide(10, 0);
System.out.println("Wynik: " + result);
} catch (ArithmeticException e) {
System.out.println("Błąd: Nie można dzielić przez zero!");
System.out.println("Szczegóły błędu: " + e.getMessage());
}
// 2. Wiele bloków catch
System.out.println("\n=== Przykład 2: Wiele bloków catch ===");
try {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]); // Wyjście poza zakres tablicy
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Błąd: Nieprawidłowy indeks tablicy!");
} catch (Exception e) {
System.out.println("Inny błąd: " + e.getMessage());
}
// 3. Try-catch-finally
System.out.println("\n=== Przykład 3: Try-catch-finally ===");
Scanner scanner = null;
try {
File file = new File("nieistniejacy.txt");
scanner = new Scanner(file);
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
} catch (FileNotFoundException e) {
System.out.println("Błąd: Plik nie został znaleziony!");
} finally {
System.out.println("Blok finally - wykonywany zawsze");
if (scanner != null) {
scanner.close();
}
}
// 4. Try-with-resources
System.out.println("\n=== Przykład 4: Try-with-resources ===");
try (Scanner fileScanner = new Scanner(new File("test.txt"))) {
while (fileScanner.hasNextLine()) {
System.out.println(fileScanner.nextLine());
}
} catch (FileNotFoundException e) {
System.out.println("Błąd: Nie można otworzyć pliku!");
}
// 5. Propagacja wyjątków
System.out.println("\n=== Przykład 5: Propagacja wyjątków ===");
try {
riskyOperation();
} catch (Exception e) {
System.out.println("Złapany wyjątek: " + e.getMessage());
}
}
// Metoda rzucająca wyjątek
public static int divide(int a, int b) {
return a / b; // Może rzucić ArithmeticException
}
// Metoda propagująca wyjątek
public static void riskyOperation() throws Exception {
throw new Exception("Operacja zakończona niepowodzeniem");
}
} Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu Podstawy Javy · Zaloguj się, aby zapisać postęp na koncie.