Sunteți pe pagina 1din 2

Laborator 6

Obiectiv – crearea de abilităţi practice de lucru în limbajul Java cu:


 Specificarea şi tratarea excepţiilor
 API Java de lucru cu excepţii
 Lucrul cu excepţii utilizator
 Restricţii de lucru cu ierarhii de excepţii/clase utilizator
 Clauza „finally”

Suport bibliografic minimal – cursul nr.5

Indicaţii de lucru:

 Se vor exersa exemplele din curs ori de câte ori se va simţi nevoia, pentru înţelegerea modului de lucru
specific platformei Java
 Elementele fiecărui enunţ se vor adăuga gradual în cod
 Problemele ce nu vor fi efectuate în cadrul orelor de laborator vor fi implementate individual

Probleme propuse:

Prb.1 Să se definească o clasă Test ce are un câmp int iniţializat pe valoarea 10 şi o metodă ce tipăreşte acest
câmp. În clasa principală se defineşte o referinţă de tip Test iniţializată pe valoarea implicită null pentru care se
apelează metoda de tipărire. Ce apare la ieşire?

Prb.2 Repetaţi exemplul anterior încadrând apelul metodei de tipărire într-un bloc try cu tratarea excepţiei
aruncate. După clauza catch() introduceți o instrucțiune de tipărire pe ecranul de ieșire. Care este utilitatea
acestei forme de implementare în raport cu codul definit la problema 1?

Prb.3 Scrieţi un cod ce generează şi capturează excepţia ArrayIndexOutOfBoundsException.

Prb.4 Creaţi o clasa proprie de excepţie ce extinde RuntimeException. Pentru aceasta definiţi:
a. un constructor explicit cu argument referinţa la tipul String, ce iniţializează un câmp String din
cadrul clasei.
b. O metodă ce afişează valoarea curentă a variabilei String.
Creaţi o clasă principală în care exersaţi aruncarea (throw) şi tratarea excepţiei proprii într-o clauză try-catch.
Există diferență în a moșteni RuntimeException sau Exception?

Prb.5 Creaţi un cod care, prin intermediul unei bucle while(cond){} să permită reluarea execuţiei atunci când o
excepţie proprie nu mai este aruncată (exemplul să fie diferit de cel din curs).
Prb.6 Creaţi 3 tipuri noi de excepţii. Definiţi o clasă principală ce conţine:
a. O metodă ce aruncă toate aceste excepţii
b. O metodă main ce apelează cealaltă metodă într-un bloc try pentru care este prevăzută o singură
clauză catch capabilă să captureze toate cele 3 excepţii.

Prb.7 Modificaţi problema 2 prin adăugarea clauzei finally. Verificaţi execuţia acesteia atunci când este și când
nu este aruncată excepţia NullPointerException.

Prb.8 Creaţi o clasă cu 2 metode f() şi g(). În g() aruncaţi o excepţie proprie. În f() apelaţi g(), capturaţi excepţia,
iar în clauza catch() aferentă aruncaţi din nou acelaşi tip de excepţie proprie. Testaţi în main apelul lui f().
Comentaţi rezultatul execuţiei.

S-ar putea să vă placă și