Junior
184
Cum se aruncă corect excepțiile în Java?
Răspuns de la AI
sobes.tech AI
Excepțiile trebuie aruncate atunci când apare o situație neașteptată, care întrerupe execuția normală a programului și necesită o tratare imediată.
Principii de bază:
- Folosiți excepțiile pentru a semnala erorile, nu pentru controlul fluxului de execuție.
- Alegeți cel mai potrivit tip de excepție din biblioteca standard.
- Creați propriile clase de excepții atunci când cele standard nu oferă suficiente informații.
- Includeți în mesajul excepției detalii despre cauza erorii, inclusiv contextul.
- Nu capturați excepțiile pe care nu le puteți trata corect. Este mai bine să le propagați mai sus în stiva de apeluri.
- Utilizați blocuri
try-with-resourcespentru închiderea automată a resurselor. - Înregistrați excepțiile pe care le tratați sau le propagați la un nivel superior.
Sintaxa corectă: throw new MyException("Mesaj de eroare");
Exemplu:
// Crearea unei excepții personalizate
public class InvalidParameterException extends Exception {
public InvalidParameterException(String message) {
super(message);
}
}
// Metodă care aruncă excepție
public int divide(int a, int b) throws InvalidParameterException {
if (b == 0) {
throw new InvalidParameterException("Împărțirea la zero nu este permisă");
}
return a / b;
}
// Utilizarea metodei și tratarea excepției
public void performDivision(int x, int y) {
try {
int result = divide(x, y);
System.out.println("Rezultat: " + result);
} catch (InvalidParameterException e) {
// Înregistrare eroare
System.err.println("Eroare la împărțire: " + e.getMessage());
// Posibilă prelucrare suplimentară sau propagare
}
}
Diferențe între excepțiile Checked și Unchecked:
| Tip de excepție | Moștenește de la | Necesită tratament/delcarare | Exemplu |
|---|---|---|---|
| Checked | Exception (cu excepția RuntimeException) |
Da (try-catch sau throws) |
IOException, SQLException |
| Unchecked | RuntimeException |
Nu (compilatorul nu o cere) | NullPointerException, ArrayIndexOutOfBoundsException |