Sobes.tech
Middle

Aké spôsoby existujú na spracovanie overených výnimiek?

sobes.tech AI

Odpoveď od AI

  • Použite blok try-catch: umožňuje zachytiť výnimku a spracovať ju, čím sa zabráni neočakávanému ukončeniu programu.
  • Vyhláste, že metóda môže vyhodiť výnimku pomocou kľúčového slova throws v signatúre metódy: toto presúva zodpovednosť za spracovanie na volajúci kód.
  • Zabaľte kontrolovanú výnimku do nekontrolovanej: umožňuje odovzdať výnimku bez explicitného spracovania, ale môže skryť skutočný problém.

Príklad použitia try-catch:

// Príklad použitia try-catch na spracovanie kontrolovanej výnimky
try {
    // Kód, ktorý môže vyhodiť kontrolovanú výnimku (napríklad, IOException)
    FileReader file = new FileReader("my_file.txt");
    // Práca so súborom...
} catch (IOException e) {
    // Spracovanie IOException
    e.printStackTrace(); // Zobrazenie zásobníka volaní pre ladenie
    System.err.println("Chyba pri práci so súborom: " + e.getMessage());
}

Príklad použitia throws:

// Príklad použitia `throws` v signatúre metódy
public void readFile(String fileName) throws IOException {
    FileReader file = new FileReader(fileName);
    // Práca so súborom...
}

// Kód volajúci musí spracovať IOException alebo ju deklarovať vo svojej vlastnej signatúre
public void processFile(String filePath) {
    try {
        readFile(filePath);
    } catch (IOException e) {
        System.err.println("Chyba pri čítaní súboru: " + e.getMessage());
    }
}

Príklad zabalenia do nekontrolovanej výnimky:

// Príklad zabalenia kontrolovanej výnimky do nekontrolovanej
public void unsafeOperation() {
    try {
        // Kód, ktorý môže vyhodiť kontrolovanú výnimku
        throw new IOException("Príklad IOException")
    } catch (IOException e) {
        // Prevod kontrolovanej výnimky na nekontrolovanú
        throw new RuntimeException("Zistená chyba v operácii", e);
    }
}