MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Clasele de excepții

Clasa de bază pentru toate excepțiile este Throwable. De la aceasta sunt derivate două clase principale: Error și Exception. Toate celelalte clase sunt derivate din aceste două clase.

Clasa Error descrie erorile interne ale mediului de execuție Java. Programatorul are posibilități foarte limitate de a gestiona astfel de erori.

Excepțiile propriu-zise derivă din clasa Exception. Dintre acestea, se remarcă clasa RuntimeException. RuntimeException este clasa de bază pentru grupul de excepții necontrolate (unchecked exceptions), excepții pe care compilatorul nu le verifică și care nu trebuie menționate cu operatorul throws în declarația unei metode.

Aceste excepții sunt, de obicei, rezultatul unor erori de programare, cum ar fi conversii incorecte de tipuri sau ieșirea din limitele unui tablou.

Unele dintre clasele de excepții necontrolate:

  • ArithmeticException: excepție care apare la împărțirea la zero
  • IndexOutOfBoundException: index în afara limitelor tabloului
  • IllegalArgumentException: utilizarea unui argument invalid la apelul unei metode
  • NullPointerException: utilizarea unei referințe nule
  • NumberFormatException: eroare de conversie a unui șir în număr

Toate celelalte clase derivate din Exception se numesc excepții controlate (checked exceptions).

Unele dintre clasele de excepții controlate:

  • CloneNotSupportedException: clasa obiectului pentru care se solicită clonarea nu implementează interfața Cloneable
  • InterruptedException: un fir de execuție a fost întrerupt de alt fir
  • ClassNotFoundException: nu se poate găsi o anumită clasă

Astfel de excepții sunt gestionate folosind construcția try..catch. Alternativ, gestionarea poate fi delegată metodei care va apela metoda curentă, specificând excepțiile după operatorul throws:

public Person clone() throws CloneNotSupportedException {
   
   Person p = (Person) super.clone();
   return p;
}

Astfel, se formează următoarea ierarhie a excepțiilor:

Deoarece toate clasele de excepții derivă din clasa Exception, ele moștenesc o serie de metode care permit obținerea de informații despre natura excepției. Printre cele mai importante metode se numără:

  • getMessage(): returnează mesajul despre excepție
  • getStackTrace(): returnează un tablou care conține trasarea stivei excepției
  • printStackTrace(): afișează trasarea stivei

De exemplu:

try {
   int x = 6 / 0;
}
catch (Exception ex) {
   ex.printStackTrace();
}
← Lecția anterioară Lecția următoare →