Middle
Povedzte o mechanizme výnimiek v Jave.
sobes.tech AI
Odpoveď od AI
V jazyku Java sa mechanizmom výnimiek sa používajú na spracovanie chýb a iných výnimočných situácií, ktoré vznikajú počas behu programu.
Hlavné prvky mechanizmu výnimiek:
- Výnimka (Exception): Objekt predstavujúci udalosť, ktorá narušuje normálny priebeh vykonávania programu.
- Bloky
try,catch,finally: Používajú sa na spracovanie výnimiek.try: Kódový blok, v ktorom môže dôjsť k výnimke.catch: Kódový blok, ktorý sa vykoná, ak v blokutryvznikne výnimka určitého typu.finally: Kódový blok, ktorý sa vždy vykoná, bez ohľadu na to, či došlo k výnimke alebo nie. Používa sa na uvoľnenie zdrojov.
- Kľúčové slovo
throw: Používa sa na jasné vytvorenie a vyhodenie výnimky. - Kľúčové slovo
throws: Používa sa v podpisu metódy na oznámenie typov výnimiek, ktoré metóda môže vyhodiť.
Hierarchia výnimiek v jazyku Java:
Throwable: Základná trieda pre všetky výnimky a chyby.Error: Predstavuje závažné problémy, z ktorých program obvykle nemôže opraviť (napríkladOutOfMemoryError).Exception: Predstavuje výnimky, ktoré program môže zachytiť a spracovať.RuntimeException(Unchecked Exceptions): Výnimky, ktoré nevyžadujú jasné spracovanie alebo oznámenie v podpise metódy (napríkladNullPointerException,ArrayIndexOutOfBoundsException).- Checked Exceptions: Výnimky, ktoré musia byť buď spracované pomocou bloku
try-catch, alebo oznámené pomocouthrowsv podpise metódy (napríkladIOException,FileNotFoundException).
Príklad spracovania výnimky:
public class ExceptionExample {
public static void main(String[] args) {
try {
int result = divide(10, 0);
System.out.println("Výsledok: " + result);
} catch (ArithmeticException e) {
// Spracovanie výnimky ArithmeticException
System.err.println("Chyba: Delenie nulou nie je povolené.");
System.err.println("Detaily výnimky: " + e.getMessage());
e.printStackTrace(); // Výpis zásobníka volaní
} finally {
// Tento blok sa vždy vykoná
System.out.println("Blok finally bol vykonaný.");
}
}
public static int divide(int a, int b) {
// Môže vyvolať ArithmeticException pri b = 0
return a / b;
}
}
Príklad použitia throws:
import java.io.FileReader;
import java.io.IOException;
public class ThrowsExample {
public static void readFile(String filename) throws IOException {
// Môže vyvolať IOException
FileReader reader = new FileReader(filename);
// Ďalšia práca so súborom
}
public static void main(String[] args) {
try {
readFile("neexistujuci_subor.txt");
} catch (IOException e) {
System.err.println("Chyba pri čítaní súboru: " + e.getMessage());
}
}
}