Middle
Povězte o mechanismu výjimek v Javě.
sobes.tech AI
Odpověď od AI
V jazyce Java se mechanismus výjimek používá k zpracování chyb a dalších výjimečných situací, které nastávají během běhu programu.
Hlavní prvky mechanismu výjimek:
- Výjimka (Exception): Objekt představující událost, která narušuje normální průběh programu.
- Bloky
try,catch,finally: Používají se k zpracování výjimek.try: Kódový blok, ve kterém může dojít k výjimce.catch: Kódový blok, který se vykoná, pokud dojde k výjimce určitého typu v blokutry.finally: Kódový blok, který se vždy vykoná, bez ohledu na to, zda došlo k výjimce nebo ne. Používá se k uvolnění zdrojů.
- Klíčové slovo
throw: Používá se k explicitnímu vytvoření a vyhození výjimky. - Klíčové slovo
throws: Používá se v podpisu metody k oznámení typů výjimek, které metoda může vyhodit.
Hierarchie výjimek v jazyce Java:
Throwable: Základní třída pro všechny výjimky a chyby.Error: Představuje závažné problémy, se kterými si program obvykle nedokáže poradit (napříkladOutOfMemoryError).Exception: Představuje výjimky, které může program zachytit a zpracovat.RuntimeException(neověřené výjimky): Výjimky, které nevyžadují explicitní zpracování nebo oznámení v podpisu metody (napříkladNullPointerException,ArrayIndexOutOfBoundsException).- Ověřené výjimky (
Checked Exceptions): Výjimky, které musí být buď zpracovány pomocí blokutry-catch, nebo oznámeny pomocíthrowsv podpisu metody (napříkladIOException,FileNotFoundException).
Příklad zpracování výjimky:
public class ExceptionExample {
public static void main(String[] args) {
try {
int result = divide(10, 0);
System.out.println("Výsledek: " + result);
} catch (ArithmeticException e) {
// Zpracování výjimky ArithmeticException
System.err.println("Chyba: Dělení nulou není povoleno.");
System.err.println("Detaily výjimky: " + e.getMessage());
e.printStackTrace(); // Výpis zásobníku volání
} finally {
// Tento blok se vždy vykoná
System.out.println("Blok finally byl vykonán.");
}
}
public static int divide(int a, int b) {
// Může vyvolat ArithmeticException při b = 0
return a / b;
}
}
Příklad použití throws:
import java.io.FileReader;
import java.io.IOException;
public class ThrowsExample {
public static void readFile(String filename) throws IOException {
// Může vyvolat IOException
FileReader reader = new FileReader(filename);
// Další práce se souborem
}
public static void main(String[] args) {
try {
readFile("neexistujici_soubor.txt");
} catch (IOException e) {
System.err.println("Chyba při čtení souboru: " + e.getMessage());
}
}
}