Pentru a face un program Java cât mai robust, trebuie să poată gestiona excepții. Compilatorul își face partea prin a nu vă permite să compilați un program până când acesta nu este corect sintactic și poate evidenția, de asemenea, excepții verificate care trebuie gestionate. Dar excepțiile care pot provoca cele mai multe dureri de cap sunt cele care apar odată ce programul rulează. Pentru a ajuta la gestionarea acestor excepții, limbajul Java oferă blocurile try-catch-finalment.
încercabloc conține toate declarațiile care ar putea provoca o excepție. De exemplu, dacă citiți date dintr-un fișier utilizând fișierul
FileReaderclasa, este de așteptat să te descurci
IOExceptionsasociate cu utilizarea unui
FileReaderobiect, de exemplu,
FileNotFoundExceptionși
IOException. Pentru a vă asigura că acest lucru se întâmplă, puteți plasa declarațiile care se ocupă de crearea și utilizarea
FileReaderobiect din interiorul unui
încercabloc: Totuși, codul este incomplet deoarece, pentru ca excepția să fie tratată, avem nevoie de un loc pentru a fi prins. Acest lucru se întâmplă în
capturăbloc (e) oferă un loc pentru a gestiona excepția aruncată de enunțurile din cadrul unui
încercabloc.
capturăblocul este definit direct după
încercabloc. Trebuie să specifice tipul de excepție pe care îl gestionează. De exemplu,
FileReaderobiectul definit în codul de mai sus este capabil să arunce a
FileNotFoundExceptionsau un
IOException. Putem specifica două
capturăblocuri pentru a gestiona ambele excepții: În
FileNotFoundExceptioncatchblocăm am putea plasa cod pentru a cere utilizatorului să găsească fișierul pentru noi și apoi să încerce să citească din nou fișierul. În
IOExceptionprinde bloc, s-ar putea să transmitem utilizatorului eroarea de E / S și să le cerem să încerce altceva. Oricum, am oferit o modalitate prin care programul poate capta o excepție și să o gestioneze într-un mod controlat.
capturăbloc. Dacă codul am dori să-l plasăm în cele două
capturăblocurile de mai sus erau exact aceleași în care am putea scrie codul astfel: În schimb, pentru a face un pic de menaj în ceea ce privește resursele, putem adăuga un bloc în sfârșit. La urma urmei, vrem să lansăm fișierul pe care l-am citit odată ce am terminat.
Instrucțiunile din blocul final sunt întotdeauna executate. Acest lucru este util pentru curățarea resurselor în cazul executării blocului try fără o excepție și în cazurile în care există o excepție. În ambele cazuri, putem închide fișierul pe care l-am folosit.
În sfârșit, blocul apare imediat după ultimul bloc de capturare: