Junior
Hogyan dobunk helyesen kivételeket Java-ban?
sobes.tech MI
Válasz az MI-től
Kivételeket akkor kell dobni, amikor olyan rendellenes helyzet áll elő, amely megszakítja a program normál végrehajtását, és azonnali feldolgozást igényel.
Alapelvek:
- Használja a kivételeket hibák jelzésére, ne a végrehajtási folyamat irányítására.
- Válassza ki a legmegfelelőbb kivételtípust a szabványos könyvtárból.
- Hozzon létre saját kivétel osztályokat, ha a szabványos nem nyújt elegendő információt.
- Tartalmazzon részletes információkat a hiba okáról, beleértve a kontextust is, a kivétel üzenetében.
- Ne fogjon el olyan kivételeket, amelyeket nem tud helyesen kezelni. Jobb őket feljebb dobni a hívási veremben.
- Használjon
try-with-resourcesblokkokat az erőforrások automatikus bezárásához. - Naplózza azokat a kivételeket, amelyeket kezel vagy feljebb továbbít.
Helyes szintaxis: throw new MyException("Hibaüzenet");
Példa:
// Saját kivétel létrehozása
public class InvalidParameterException extends Exception {
public InvalidParameterException(String message) {
super(message);
}
}
// Kivételt dobó metódus
public int divide(int a, int b) throws InvalidParameterException {
if (b == 0) {
throw new InvalidParameterException("Nullával való osztás nem megengedett");
}
return a / b;
}
// A metódus használata és kivétel kezelése
public void performDivision(int x, int y) {
try {
int result = divide(x, y);
System.out.println("Eredmény: " + result);
} catch (InvalidParameterException e) {
// Hiba naplózása
System.err.println("Hiba osztás közben: " + e.getMessage());
// További feldolgozás vagy továbbítás
}
}
A Checked és Unchecked kivételek közötti különbségek:
| Típus | Öröklődés | Kezelés/dokumentálás szükséges | Példa |
|---|---|---|---|
| Checked | Exception (kivéve RuntimeException) |
Igen (try-catch vagy throws) |
IOException, SQLException |
| Unchecked | RuntimeException |
Nem (a fordító nem kéri) | NullPointerException, ArrayIndexOutOfBoundsException |