Sobes.tech
Middle

Jakie metody obsługi sprawdzanych wyjątków istnieją?

sobes.tech AI

Odpowiedź od AI

  • Użyj bloku try-catch: pozwala on przechwycić wyjątek i go obsłużyć, zapobiegając nagłemu zakończeniu programu.
  • Zadeklaruj, że metoda rzuca wyjątek, używając słowa kluczowego throws w sygnaturze metody: przenosi to odpowiedzialność za obsługę na kod wywołujący.
  • Opakuj sprawdzany wyjątek w nie sprawdzany: pozwala na przekazanie wyjątku bez jawnego obsługiwania, ale może ukryć prawdziwy problem.

Przykład użycia try-catch:

// Przykład użycia try-catch do obsługi sprawdzanego wyjątku
try {
    // Kod, który może rzucić sprawdzany wyjątek (np. IOException)
    FileReader file = new FileReader("my_file.txt");
    // Praca z plikiem...
} catch (IOException e) {
    // Obsługa IOException
    e.printStackTrace(); // Wyświetlenie stosu wywołań do debugowania
    System.err.println("Błąd podczas pracy z plikiem: " + e.getMessage());
}

Przykład użycia throws:

// Przykład użycia throws w sygnaturze metody
public void readFile(String fileName) throws IOException {
    FileReader file = new FileReader(fileName);
    // Praca z plikiem...
}

// Kod wywołujący musi obsłużyć IOException lub zadeklarować je w swojej sygnaturze
public void processFile(String filePath) {
    try {
        readFile(filePath);
    } catch (IOException e) {
        System.err.println("Błąd podczas odczytu pliku: " + e.getMessage());
    }
}

Przykład opakowania w nie sprawdzany wyjątek:

// Przykład opakowania sprawdzanego wyjątku w nie sprawdzany
public void unsafeOperation() {
    try {
        // Kod, który może rzucić sprawdzany wyjątek
        throw new IOException("Przykład IOException");
    } catch (IOException e) {
        // Przekształcenie sprawdzanego wyjątku w nie sprawdzany
        throw new RuntimeException("Wykryto błąd w operacji", e);
    }
}