Pentru tratarea erorilor remediabile Java foloseste exceptiile. Exemple de exceptii pot fi : ArrayIndexOutOfBoundsException EOFException FileNotFoundException InterruptedException, etc
Exceptiile pot fi tratate in Java in mai multe moduri : pot fi ignorate ; pot fi tratate direct in codul in care apar; pot fi transmise codului ce a apelat metoda care a generat exceptia, in ideea ca vor fi tratate de acesta. De obicei se recomanda tratarea erorilor in cadrul programului. Exceptiile sunt tratate ca obiecte. Codul de tratare a exceptiilor se afla in pachetul java.lang, mai exact in clasa java.lang.Exception.
Exceptiile sunt tratate cu ajutorul a trei tipuri de instructiuni : try, catch si finally. Acestea sunt folosite in constructii de forma:
try { instructiuni care pot genera o exceptie }
catch (ExceptionType1 e) { prelucrarea exceptiei de tipul 1 } catch (ExceptionType2 e) { prelucrarea exceptiei de tipul 2 }
finally { prelucrarea tuturor celorlalte tipuri de exceptii }
Exemplu de folosire a instructiunilor try - catch
public class ExExceptie { public static void main (String args[]) { int[] myArray = new int[10]; try { System.out.println("Inainte de o atribuire valida in matrice..." MyArray[0] = 100; System.out.println("Inainte de o atribuire invalida in matrice..." MyArray[100] = 100; System.out.println("Dupa o exceptie in matrice" } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Eroare de indice in matrice!" }
} }
Exemplu de folosire a instructiunii finally ... Instructiunea throw determina generarea unei exceptii de catre codul propriu-zis, ramanand in sarcina procedurii apelante sa trateze exceptia. Tipul exceptiei poate fi predefinit (existent in clasa java.lang.Exception) sau poate fi un tip definit special pentru o anume aplicatie. Sintaxa instructiunii este : throw (Obiect_Exceptie) Exemplu: import java.net.*; public class MyMain { public static void main (String args[]) { MalformedURLException e; e = new MalformedURLException(Adresa URL incorecta!); throw(e); }
Personalizarea exceptiilor existente cat si crearea de noi exceptii se realizeaza prin extinderea clasei java.lang.Exception Exemplu public class MyOutOfRangeException extends Exception { public MyOutOfRangeException () { super(); } public MyOutOfRangeException (String s) { super(s); } }
public class VerifyRange { MyOutOfRangeException e; public void verifyIntRange(int value, int low,int high) throws MyOutOfRangeException { if ((value < low) || (value > high)) { e = new MyOutOfRangeException("number " + value + " out of range" throw(e); } } }
Obs: sectiunea throw din declaratia functiei obliga orice rutina care apeleaza metoda VerifyRange sa contina o procedura de tratare a exceptiei MyOutOfRangeException.