CalculatoareProgramare

Java: excepții și manipularea lor

Orice program va funcționa stabil numai în cazul în care codul sursă este depanat, și nu există condiții care pot provoca situații neprevăzute. Procesul de capturare posibile defecțiuni se realizează pe faza de programare. Pentru a face acest lucru, dezvoltatorul ia în considerare toate rezultatele așteptate și încercări de a limita efectul erorii, astfel încât nu ar putea interfera cu funcționarea programului, sau poate duce la prăbușirea sa.

Când ați putea avea nevoie de manipulare excepție

În Java, o excepție poate fi cauzată de datele introduse de utilizator incorecte, nu este nevoie de o resursă sau un program de deconectare bruscă de rețea. Pentru o utilizare confortabilă creată de dezvoltator de aplicații, trebuie să controleze apariția unor situații de urgență. Consumatorul nu ar trebui să aștepte să renunțe la o aplicație, pentru a pierde date, ca urmare a unei excepție netratată, sau doar o parte dintr-un mesaj care să ateste că ceva a mers prost.

Manipularea excepțiilor Java

Ce să ia în considerare? Limbajul Java are propria funcționalitate de manipulare excepție built-in. Desigur, un mare procent de eroare este prins de o altă etapă de compilare, sistemul va notifica automat că utilizarea nu mai este posibilă este. Dar există acest tip de excepție, care are loc în timpul rulării. Dezvoltatorul ar trebui să fie capabil să-l anticipeze și pentru a proiecta codul, astfel încât acesta nu a cauzat o eroare și manipulate într-un mod special și predat de control la o altă ramură.

În Java, acest lucru este impus de compilator pentru a prinde o excepție, așa că sunt cunoscute problemele tipice și au un standard de modele de exerciții.

excluderi tipice

Cel mai simplu exemplu, în care puteți obține o excepție - această diviziune. În ciuda simplității sale, din punct de vedere, ca un separator, poate fi zero, ceea ce va duce la o eroare. Ei bine, dacă este posibil să se prevadă apariția trecutului și pentru a preveni. Dar această opțiune nu este întotdeauna disponibilă, astfel încât prinderea excepția ar trebui să fie organizate în mod direct, în caz de „divide la zero“.

Mecanismul Java pentru a intercepta eroare de procesare arată astfel:

  • obiect excepție heap este creat, precum și orice alte;
  • cursul natural al programului este întreruptă;
  • mecanism de excludere încearcă să găsească o modalitate alternativă de a continua codul;
  • Găsiți o execuție în condiții de siguranță a programului în procesor, munca sau restaurate, sau va avea loc realizarea de excepție într-un mod special.

Cel mai simplu exemplu de creare a unei erori ar putea arăta astfel:

if (nul ==)

arunca nouă NullPointerException ();

Aici, variabila a este verificat la inițializare, și anume, nu este dacă referirea la un obiect nul. În cazul în care această situație a apărut și au nevoie de o manipulare specială, o excepție este aruncată de o nouă aruncare NullPointerException ().

Cateva detalii despre cuvintele cheie

Atunci când se ocupă cu excepții este adesea necesar să se utilizeze Java cuvinte cheie pentru a se referi la o anumită acțiune. Acest limbaj de programare lor de cinci:

  • Încearcă. Acest cuvânt cheie este deja îndeplinită, și înseamnă o tranziție într - o secțiune de cod care poate arunca o excepție. Block acolade limitate {}.
  • Catch. Acesta intercepteaza tipul de excepție dorită și utilizați-l în mod corespunzător.
  • În cele din urmă. Acest cuvânt cheie este opțională și este utilizat pentru a efectua o anumită bucată de cod, care este necesară, oricum, chiar dacă nu face excepție nu este prins. Adăugat direct după blocul try.
  • Arunca - vă permite să creați excepții Java de oriunde.
  • Aruncări - un cuvânt cheie care este plasat în semnătura metodei. Aceasta înseamnă că următorul cod poate arunca o excepție de acest tip Java. Această marcă servește ca un semnal pentru dezvoltatorii care trebuie să se aibă în vedere - metoda nu poate funcționa cum era de așteptat de la el.

Prinderea cu o încercare

Release excepții Java, în mod natural presupune că vor fi tratate într-un mod special. Cel mai convenabil mod de a face acest lucru, în cazul în care secțiunea de cod este îngrădite într-un bloc. Care poate conține o excepție. Când executați acest cod, mașina virtuală va găsi o situație neașteptată, să înțeleagă că există un bloc critic și transferă controlul la stația de prelucrare.

Codul Java este înfășurat într-o încercare bloc special, în care poate fi o excepție. Astfel, el a pus mai multe situații neprevăzute, care vor fi prinse în același loc, nu codul raspolzayas.

Codul cel mai tipic pentru unitatea de procesare este după cum urmează:

try {

// Aici este un cod care poate genera o excepție

} Catch (identifikator_1 Tip_isklyucheniya_1) {

// Aici există manipulare excepție, în funcție de tipul și condițiile acestuia;

} Catch (identifikator_2 Tip_isklyucheniya_2) {

// Aici există manipulare excepție, în funcție de tipul și condițiile acestuia;

}

captura cuvinte cheie rapoarte de acest cod, și scanați-l pentru o excepție, care urmează să fie tratată așa cum este descris mai jos, cu condiția ca acesta să respecte cu tipul său. Identificatorul poate fi utilizat în procesarea blocului de cod ca argumente.

În cele din urmă

După cum a devenit clar din capitolul anterior, blocuri de captură de captură excepții și să le proceseze. Dar, de foarte multe ori apare în situația în care ar trebui să ruleze un cod, indiferent dacă au fost prinși greșeli. Pentru aceasta este cuvântul cheie în cele din urmă. Este folosit pentru a crește valorile diferitelor contoare, închiderea fișierelor sau conexiuni de rețea.

Acest complot prezintă mai multe blocuri de captură a inventat metode de captură excepții. De exemplu, codul de conținut în încercare generează o situație neașteptată, cum ar fi rece. Apoi, consola va fi afișată expresia «Prins rece!» Și «Este ceva de bucurie?». Aceasta este, în cele din urmă blocul este executat, în orice caz.

De fapt, o modalitate de a evita declanșarea în cele din urmă acolo. Este conectat cu finalizarea mașinii virtuale. Găsiți cum să-l pună în aplicare, este posibil, pe spațiile deschise pe Internet.

cuvinte cheie Throw

Aruncare generează o excepție. Sintaxa sa este următoarea:

arunca nouă NewException ();

Acolo se creează o nouă excepție de tip NewException (). Ca un tip poate fi utilizat este deja inclusă în clasele standard de bibliotecă Java și definite anterior de dezvoltator proprii de producție.

Acest design face parte din descrierea oricărei metode, care apelul trebuie să aibă loc atunci în cadrul blocului try, pentru a putea să-l intercepteze.

cuvinte cheie aruncă

Ce se întâmplă dacă în procesul de dezvoltare a unei situații în care metoda poate arunca o excepție, dar nu sunt în măsură să se ocupe în mod corespunzător. În acest scop, în semnătura metodei specifică cuvântul aruncă și tipul de posibile excepții.

Această etichetă este un fel de indicator pentru dezvoltatori client că metoda nu este în măsură să se ocupe de aceeași excepție lor. În plus, în cazul în care tipul de eroare este verificat, atunci compilatorul va forța în mod explicit cere.

Încercați să resurse

Dezvoltatorii Java versiunea 7 au inclus o inovație majoră, ca un bloc de tratament încercați cu resurse.

Multe obiecte sunt create în Java, după utilizare ar trebui să fie închise pentru a conserva resursele. Anterior, ea a trebuit să ia în considerare acest lucru și se va opri manual aceste cazuri. Acum, cu toate acestea, au apărut interfață AutoClosable. Aceasta ajută să se închidă automat obiectele utilizate deja plasate într-un bloc try. Prin această abordare a devenit mai convenabil pentru a scrie cod în lizibilitatea este crescut în mod semnificativ.

clase proprii excepții Java

Creatorii limbajului de programare descris luat în considerare mai multe aspecte ale tipurilor de design de situații de urgență. Cu toate acestea, toate opțiunile pentru a preveni rezultatul evenimentelor nu va funcționa, astfel încât în Java a implementat posibilitatea de a defini propriile excepții, este necesar la nevoile codului special.

Cel mai simplu mod de a crea - să moștenească de la cele mai potrivite contextului obiectului.

Nu sa întâmplat să moștenească de la Excepție, clasa care este folosit pentru a defini propriile excepții. În MyException are doi constructori - o implicit, al doilea - cu argumentul de tip String msg.

Apoi, în FullConstructors clasă publică implementată metoda f, care conține semnătura aruncă MyException. Acest cuvânt cheie înseamnă că f poate arunca ca Java MyException excepție. Mai mult, în corpul metodei a produs informații de text de ieșire la consola în sine și MyException reală de generare, prin aruncare.

A doua metodă este ușor diferită de prima, care, atunci când creați o excepție, acesta este trecut un parametru șir de caractere, care se va reflecta în consola de la capturare. În principal, este clar că f () și g () sunt plasate într-o verificare try și captură cuvânt cheie configurat pentru a captura MyException. Rezultatul prelucrării este de a afișa un mesaj de eroare la consolă:

Astfel, acesta a venit pentru a adăuga excepții Java, prin propria lui mână.

excepții Arhitectura

Ca și în 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ștenit de la el două tipuri - de eroare și excepție.

Eroare - semnalează eroarea critică și este excepții Java nebifate. Interceptării și de prelucrare a acestor date, în cele mai multe cazuri, are loc în etapa de proiectare și nu au nevoie de introducerea în codul aplicației finale.

Clasa cel mai frecvent utilizate pentru crearea și analizarea excepțiilor este o excepție. Ceea ce, la rândul său, este împărțit în mai multe ramuri, inclusiv RuntimeException. Prin RuntimeException sunt excepții de rulare, care este, care apar în timpul programului. Toate clasele derivate din acesta sunt unverifiable.

Adesea, există excepții

În Java excepții, lista care este prezentată mai jos, sunt utilizate cel mai des, astfel că ar trebui să descrie fiecare dintre ele în detaliu:

  • ArithmeticException. Acestea includ erori asociate cu operații aritmetice. Cel mai izbitor exemplu - divizia de zero.
  • ArrayIndexOutOfBoundsException - un apel la numărul elementului matrice care depășește totalul lungimii sale.
  • ArrayStoreException - încercarea de a atribui un element de tip incompatibil de matrice.
  • ClassCastException - o încercare de a aduce un tip greșit la altul.
  • IllegalArgumentException - folosind argumentul greșit în apelul metodei.
  • NegativeArraySizeException - o excepție atunci când creați o matrice de dimensiune negativă.
  • NullPointerException - utilizarea abuzivă a referințelor la null.
  • NumberFormatException - apare atunci când o conversie șir greșit la număr întreg.
  • UnsupportedOperationException - operație nu este acceptată.

Aceste exemple reprezintă tipurile de excepții Java nebifate. Dar, asa ca uite verificat:

  • ClassNotFoundException - Clasa nu a fost găsit.
  • IllegalAcccessException - să restricționeze accesul la clasa.
  • InterruptedException - întreruperea fluxului.
  • NoSuchFieldException - nu există nici un câmp obligatoriu.

Interpretarea excepțiilor

Vorbind de excepții frecvent întâlnite trebuie remarcat faptul că interpretarea lor în proiectarea, poate fi perceput în mod incorect. Următoarea este o listă scurtă a explica mai în detaliu, în cazul în care poate exista o situație neașteptată.

NullPointerException. Chiar primul caz, atunci când există o excepție, este de a face apel la o trimitere la un obiect care este egal cu zero. De asemenea, se extinde la zero metode de clasă instanță. NullPointerException pot fi aruncate în cazul obținerii unei matrice de lungime nulă egală. Pentru a evita astfel de situații se va verifica periodic site-uri pe nul.

ArrayIndexOutOfBoundsException. Orice program nu poate exista fără utilizarea de matrice. Prin urmare, folosirea frecventă poate genera și eroare. Excepție se produce atunci când un dezvoltator încearcă să acceseze un element de matrice care nu se află în lista de index. De exemplu, valoarea solicitată este deasupra sau sub lungime zero. Foarte adesea este un rezultat al faptului că, în matrice începe cu un scor de la zero.

constatări

Manipularea excepțiilor Java - un mediu de instrument puternic, care facilitează foarte mult activitatea de programator și îi permite să creeze un loc curat și lipsit de erori de cod. La aplicarea cât de netedă și stabilă de funcționare depinde de statutul și reputația dezvoltatorului.

Desigur, într-un programe mai mult sau mai puțin simple pentru a urmări situații anormale mult mai ușor. Dar, în mari complexe automatizate pentru câteva sute de mii de linii este posibilă doar ca urmare a unor teste pe termen lung și depanare.

Pentru excepție eroare Java de la care apar în anumite aplicații, unele companii oferă o recompensă atunci când găsesc entuziaști. Mai ales apreciat de către cei care cauzează o încălcare a software-ului politicii de securitate.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ro.delachieve.com. Theme powered by WordPress.