Java: excepții și manipularea acestora
Orice program va funcționa în mod stabil numai dacă codul sursă este depanat și nu există condiții care pot provoca situații neprevăzute. Procesul de capturare a posibilelor defecțiuni se efectuează în stadiul de programare. Pentru a face acest lucru, dezvoltatorul ia în considerare toate rezultatele așteptate și încearcă să limiteze efectul erorii astfel încât să nu poată rupe programul sau să ducă la colapsul acestuia.
conținut
- Când este posibil să aveți nevoie să rezolvați excepțiile
- Manipularea excepțiilor java
- Excepții tipice
- Puține detalii despre cuvintele cheie
- Prindeți cu încercați
- În cele din urmă
- Cuvântul aruncat
- Aruncă cuvinte cheie
- Încearcă cu resurse
- Clase de excepție java personalizate
- Arhitectura de excepție
- Excepții frecvente
- Interpretarea excepțiilor
- Constatări
Când este posibil să aveți nevoie să rezolvați excepțiile
În Java, excepțiile pot fi cauzate de intrările incorecte ale utilizatorilor, de lipsa resurselor necesare pentru rularea programului sau de oprirea bruscă a rețelei. Pentru utilizarea confortabilă a aplicației create de dezvoltator, este necesar să controlați apariția unor situații extraordinare. Consumatorul nu trebuie să aștepte ca programul spânzurat să-și termine munca, să-și piardă datele ca urmare a unor excepții nefolosite sau pur și simplu să apară mesaje că ceva nu a mers bine.
Manipularea excepțiilor Java
Ce trebuie luat în considerare? Limba Java are propria funcționalitate de gestionare a excepțiilor. Desigur, un procent mare de erori este capturat în etapa de compilare, când sistemul va raporta automat că nu mai poate fi folosit. Dar există și astfel de excepții care apar în timpul funcționării programului. Dezvoltatorul trebuie să poată prevedea acest lucru și poate proiecta codul astfel încât să nu provoace o eroare, ci să o trateze într-un mod special sau să treacă controlul la o altă ramură.
În Java, o astfel de capturare a excepțiilor este impusă de compilator, astfel încât problemele tipice sunt cunoscute și au propriile lor scheme standard de execuție.
Excepții tipice
Cel mai simplu exemplu în care puteți obține o excepție este împărțirea. În ciuda simplității sale, în expresie, ca divizor, poate exista zero, ceea ce va duce la o eroare. Ei bine, dacă aparența lui poate fi anticipată mai devreme și împiedicată. Dar această opțiune nu este întotdeauna disponibilă, astfel încât excepția de capturare ar trebui organizată direct atunci când apare "împărțirea la zero".
În Java, mecanismul de gestionare a erorilor arată astfel:
- Un obiect de excludere este creat pe halda, la fel ca oricare altul;
- cursul natural al programului este întrerupt;
- mecanismul de excepție încearcă să găsească o modalitate alternativă de a continua codul;
- Descoperind locul de execuție în siguranță a programului în mâna de lucru, lucrarea fie va fi restaurată, fie o excepție va fi implementată într-un mod special.
Cel mai simplu exemplu de a crea o eroare ar putea arăta astfel:
dacă (a == null)
arunca noua NullPointerException ();
Aici variabila a este verificată pentru inițializare, adică nu este egală cu referința nulă. În cazul în care apare această situație și este nevoie de o prelucrare specială, o excepție este aruncată cu aruncarea noului NullPointerException ().
Puține detalii despre cuvintele cheie
Când lucrați cu excepții, de multe ori trebuie să utilizați cuvinte cheie Java pentru a vă referi la o acțiune. În acest limbaj de programare sunt cinci:
- Încearcă. Acest cuvânt cheie a fost deja întâlnit și înseamnă că merge la o secțiune de cod care poate arunca o excepție. Blocul este limitat la brațele curbate {}.
- Catch. Creează tipul de excepție adecvat și o administrează în mod corespunzător.
- În cele din urmă. Acest cuvânt cheie este opțional și servește pentru a executa o bucată de cod care este necesar în orice caz, chiar dacă nu este interceptată nici o excepție. Se adaugă imediat după blocul de încercare.
- Aruncare - vă permite să creați excepții Java oriunde în cod.
- Aruncă este cuvântul cheie care este plasat în semnătura metodei. Aceasta înseamnă că codul ulterior poate elimina excepția Java de tipul specificat. O astfel de etichetă servește ca un semnal pentru dezvoltatori, ceea ce trebuie să vă păstrați în minte - metoda poate să nu funcționeze conform așteptărilor.
Prindeți cu încercați
Aruncarea în excepție Java, presupune în mod natural că va fi tratată într-un mod special. Modul cel mai convenabil de a face acest lucru este dacă secțiunea de cod este împărțită într-un bloc. Care conține eventual o excepție. Atunci când execută un astfel de cod, mașina virtuală găsește o situație neașteptată, înțelege că este în blocul critic și transferă controlul spre zona de procesare.
În Java, codul este înfășurat într-un bloc special de încercare, în interiorul căruia poate fi aruncată o excepție. Astfel, se pune deodată o serie de situații neașteptate, care vor fi prinse într-un singur loc, fără a se târî de-a lungul codului.
Codul cel mai tipic cu un bloc de procesare arată astfel:
încercați {
// Aceasta va determina codul care poate arunca o excepție
} catch (Exception_Type_1 identifier_1) {
// Aici este procesată excepția, în funcție de tipul și condițiile acesteia;
} catch (Extraction_type_2 identifier_2) {
// Aici este procesată excepția, în funcție de tipul și condițiile acesteia;
}
Cuvântul cheie de captură informează că codul supus verificării excepției trebuie procesat conform descrierii de mai jos, cu condiția ca acesta să corespundă tipului său. Identificatorul poate fi folosit în interiorul blocului de cod de procesare ca argumente.
În cele din urmă
După cum a devenit clar din capitolul precedent, blocurile de captură captează excepții și le procesează. Dar, foarte des, există o situație în care un anumit cod ar trebui să fie executat, indiferent dacă au fost prinse erori. Pentru aceasta, există în sfârșit cuvântul cheie. Este folosit pentru a mări valorile diferitelor contoare, închide fișierele sau conexiunile la rețea.
În acest domeniu, mai multe blocuri de captură sunt inventate cu metode inventate de capturare a excepțiilor. De exemplu, codul conținut în încercare generează o situație neașteptată de tipul Cold. Apoi, expresia "Cold cold!" Și "Este ceva la care să se înveselească?" Va fi afișat în consola. Adică, blocul final este executat în orice caz.
De fapt, există o modalitate de a evita rularea în cele din urmă. Este conectat la terminarea mașinii virtuale. Aflați cum se poate face acest lucru pe Internet.
Cuvântul aruncat
Aruncarea aruncă o excepție. Sintaxa sa arată astfel:
aruncați noua NewException ();
Aici este creată o nouă excepție cu tipul NewException (). Ca tip, puteți utiliza clasele deja incluse în bibliotecile Java standard și definite anterior de dezvoltatorul propriei dvs. producții.
O astfel de construcție este inclusă în descrierea unei anumite metode, care trebuie apoi apelată în blocul de încercare, pentru a fi capabilă să o intercepteze.
Aruncă cuvinte cheie
Ce se poate face dacă în procesul de dezvoltare există o situație în care metoda poate arunca o excepție, dar nu o poate face corect. Pentru a face acest lucru, semnătura metodei specifică cuvântul "aruncă" și tipul de posibilă excepție.
Această etichetă este un fel de pointer pentru dezvoltatorii de clienți că metoda nu este capabilă să proceseze propria excepție. În plus, dacă tipul de eroare este verificabil, atunci compilatorul va specifica în mod explicit acest lucru.
Încearcă cu resurse
În versiunea 7 a versiunii Java, dezvoltatorii au inclus o inovație atât de importantă ca procesarea blocului de încercare cu resurse.
Multe dintre obiectele create în Java, după utilizarea lor, trebuie închise pentru a salva resursele. Anterior, a trebuit să contabilizați și să opriți astfel de cazuri manual. Acum au o interfață AutoClosable. Ajută la închiderea automată a obiectelor deja folosite, plasate în blocul de încercare. Datorită acestei abordări, a devenit mai convenabil să se scrie codul, lizibilitatea sa crescut semnificativ.
Clase de excepție Java personalizate
Creatorii limbajului de programare descris au luat în considerare multe aspecte atunci când proiectează tipuri de situații neprevăzute. Cu toate acestea, toate variantele rezultatului evenimentelor nu pot fi prevenite, prin urmare, în Java se realizează posibilitatea de a determina propriile excepții, potrivite exact pentru nevoile unui anumit cod.
Cea mai simplă modalitate de a crea este să moșteni din obiectul cel mai potrivit pentru context.
Aici ați moștenit de la Excepție, o clasă care este folosită pentru a vă defini excepțiile. În MyException există doi constructori - unul implicit, cel de-al doilea - cu argumentul de tip msg msg.
Apoi, în clasa publică FullConstructors, metoda f este implementată, a cărei semnătură conține aruncarea MyException. Acest cuvânt cheie înseamnă că f poate arunca o excepție Java de tip MyException. Mai mult, în corpul metodei, informația textului este transmisă consolei și generației actuale a lui MyException, prin aruncare.
Cea de-a doua metodă diferă ușor de prima, prin faptul că, atunci când o excepție este aruncată, este trecut un parametru de șir, ceea ce se va reflecta în consola atunci când este capturat. În principiu, vedeți că f () și g () sunt plasate în blocul de încercare, iar cuvântul cheie de captură este setat să captureze MyException. Rezultatul procesării este rezultatul mesajului de eroare la consola:
Astfel, a fost posibil să se adauge excepții la Java, create manual.
Arhitectura de excepție
Ca toate obiectele din Java, excepțiile sunt, de asemenea, moștenite și au o structură ierarhică. Elementul rădăcină al tuturor erorilor aruncate în acest limbaj de programare este clasa java.lang.Throwable. Moșnește două tipuri - eroare și excepție.
Eroare - notifică despre erori critice și reprezintă excepții Java necontrolate. Interceptarea și prelucrarea acestor date în majoritatea cazurilor are loc în stadiul de dezvoltare și nu trebuie să fie implementată în codul aplicației finale.
Cea mai frecvent folosită clasă pentru crearea și analizarea excepțiilor este Excepția. Care, la rândul său, este împărțită în mai multe ramuri, inclusiv RuntimeException. RuntimeException se referă la excepțiile de runtime, adică cele care apar în timpul executării programului. Toate clasele moștenite de la el nu pot fi verificate.
Excepții frecvente
În excepțiile Java, lista cărora este prezentată mai jos, sunt folosite cel mai des, deci merită să le descriem mai detaliat:
- ArithmeticException. Aceasta include erorile legate de operațiile aritmetice. Exemplul cel mai frapant este împărțirea la zero.
- ArrayIndexOutOfBoundsException - accesează numărul unui element de matrice care depășește lungimea sa totală.
- ArrayStoreException - o încercare de a atribui un element matrice de tip incompatibil.
- ClassCastException - o încercare de a interpreta greșit un tip în altul.
- IllegalArgumentException - folosind un argument nevalid în apelul metodei.
- NegativeArraySizeException este o excepție atunci când se creează o matrice de dimensiune negativă.
- NullPointerException - utilizarea incorectă a referinței null.
- NumberFormatException - apare atunci când șirul nu este convertit la un număr.
- Operație neacceptată - operația nu este acceptată.
Aceste exemple sunt tipuri de excepție care nu sunt marcate în Java. Așa că verificați:
- ClassNotFoundException - clasa nu a fost găsită.
- IllegalAcccessException - restricționează accesul la clasă.
- InterruptedException - întreruperea fluxului.
- NoSuchFieldException - câmpul necesar nu există.
Interpretarea excepțiilor
Vorbind de excepții comune, trebuie remarcat faptul că interpretarea lor în cursul dezvoltării poate fi percepută incorect. Apoi, există o mică listă care explică mai detaliat când se poate ivi o situație neprevăzută.
NullPointerException. Prima dată când apare o excepție este să se refere la o referință de obiect care este nulă. Acest lucru se aplică și metodelor din instanța zero a clasei. Un NullPointerException poate fi aruncat și dacă lungimea matricei este egală cu null. Evitați astfel de situații prin verificarea periodică a obiectelor pe nul.
ArrayIndexOutOfBoundsException. Orice program nu poate exista fără a utiliza matrice. În consecință, o referire frecventă la acestea poate duce la erori. Există o excepție atunci când dezvoltatorul încearcă să acceseze un element de matrice care nu se află în lista index. De exemplu, valoarea solicitată este deasupra sau sub zero. Acesta apare adesea ca urmare a faptului că numărătoarea din matrice începe de la zero.
constatări
Manipularea excepțiilor Java este un instrument de mediu puternic care facilitează foarte mult munca programatorului și îi permite să creeze un cod curat și fără erori. Statutul și reputația companiei de dezvoltatori depind de modul în care funcționează fără probleme și stabil.
Desigur, în programe mai mult sau mai puțin simple, este mult mai ușor să urmăriți situațiile independente. Dar în complexe mari automate pentru câteva sute de mii de linii, acest lucru este posibil numai ca rezultat al depanării și testării pe termen lung.
Pentru excepțiile Java, erorile care apar în unele aplicații, companiile individuale oferă recompense atunci când sunt entuziaști. Se apreciază în special cele care cauzează încălcarea politicii de securitate a complexului software.
- Ce este - compilatorul sau Cum de a face computerul să înțeleagă ce vrei de la el?
- Cum se instalează Java pe Windows 7
- Cum se actualizează Java pe sistemele de operare Linux și Windows?
- Primul program Java este Hello World
- Limbaj de programare Java
- Browser pentru PSP: Prezentare generală a programului
- Cum și de ce trebuie să instalez Java pe calculatorul meu?
- Ce ar trebui făcut în cazul în care "Maincraft" se întinde și frânează?
- În detaliu despre cum să faci, că "Maynkraft" nu a rămas
- Cum de a învăța programarea de la zero în limbi de programare populare
- Care este caracteristica specială a software-ului cross-platform?
- Mediu de dezvoltare integrat Java
- Java nu este instalat: ce ar trebui să fac? Cum se instalează pe Ubuntu?
- Dealply: ce este acest program?
- BigInteger Java: lucrul cu numere mari
- Nu trimiteți mesaje în Skype? motive și remedii
- Cum se activează Java în Firefox pentru probleme de blocare
- Ce este RunDLL.dll și cum se remediază eroarea asociată acestui fișier?
- Cum se elimină java de pe computer? Este ușor!
- Compilarea este un proces care facilitează comunicarea între un programator și un calculator
- Care este codul programului, aplicația, erorile