Middle
Vorbește despre mecanismul de excepții în Java.
sobes.tech AI
Răspuns de la AI
În Java, mecanismul de excepții este utilizat pentru a trata erorile și alte situații excepționale care apar în timpul execuției programului.
Elementele principale ale mecanismului de excepții:
- Excepție (Exception): Obiect care reprezintă un eveniment care întrerupe fluxul normal de execuție al programului.
- Blocuri
try,catch,finally: Sunt folosite pentru tratarea excepțiilor.try: Bloc de cod în care poate apărea o excepție.catch: Bloc de cod care se execută dacă în blocultryapare o excepție de un anumit tip.finally: Bloc de cod care se execută întotdeauna, indiferent dacă a apărut sau nu o excepție. Este folosit pentru eliberarea resurselor.
- Cuvântul cheie
throw: Este folosit pentru a crea și arunca explicit o excepție. - Cuvântul cheie
throws: Este folosit în semnătura metodei pentru a declara tipurile de excepții pe care metoda le poate arunca.
Ierarhia excepțiilor în Java:
Throwable: Clasa de bază pentru toate excepțiile și erorile.Error: Reprezintă probleme grave din care programul de obicei nu se poate recupera (de exemplu,OutOfMemoryError).Exception: Reprezintă excepții pe care programul le poate captura și trata.RuntimeException(Excepții necontrolate): Excepții care nu necesită tratament explicit sau declarație în semnătura metodei (de exemplu,NullPointerException,ArrayIndexOutOfBoundsException).- Excepții verificate (Checked Exceptions): Excepții care trebuie fie tratate cu un bloc
try-catch, fie declarate cuthrowsîn semnătura metodei (de exemplu,IOException,FileNotFoundException).
Exemplu de tratare a excepției:
public class ExceptionExample {
public static void main(String[] args) {
try {
int result = divide(10, 0);
System.out.println("Rezultat: " + result);
} catch (ArithmeticException e) {
// Tratarea excepției ArithmeticException
System.err.println("Eroare: Împărțirea la zero nu este permisă.");
System.err.println("Detalii despre excepție: " + e.getMessage());
e.printStackTrace(); // Afișează stiva apelurilor
} finally {
// Acest bloc se va executa întotdeauna
System.out.println("Bloc finally executat.");
}
}
public static int divide(int a, int b) {
// Poate arunca ArithmeticException dacă b = 0
return a / b;
}
}
Exemplu de utilizare a throws:
import java.io.FileReader;
import java.io.IOException;
public class ThrowsExample {
public static void readFile(String filename) throws IOException {
// Poate arunca IOException
FileReader reader = new FileReader(filename);
// Lucru suplimentar cu fișierul
}
public static void main(String[] args) {
try {
readFile("fisier_inexistent.txt");
} catch (IOException e) {
System.err.println("Eroare la citirea fișierului: " + e.getMessage());
}
}
}