Excepții în Java

După cum știți, excepții - acestea sunt evenimentele care au loc în timpul execuției programului. Aceste evenimente perturba cursul normal al lucrurilor.

încercați bloc, captura

O parte a codului, ceea ce poate provoca o excepție, care acoperă blocul try.

Stivuitoare Excepție sunt declarate în blocul de captură care urmează imediat după blocul try.

blocuri de captură pot fi mai multe pentru blocul o singură încercare.

În captura blocul merge de manipulare excepție, iar argumentul său specifică tipul excepție care se pot ocupa de această unitate, și anume, Tipul de argument este tipul de excepție. Codul înregistrat în blocul de captură are un manipulator de exceptii.

În final bloc

După blocul (e) pot fi amplasate în cele din urmă cu excepția Republicii bloc. Este acceptabil atunci când nu există blocuri de captură, dar există un bloc în cele din urmă. în cele din urmă cod bloc este întotdeauna executat, și nu numai atunci când are loc o excepție. Este posibil să se efectueze sunt necesare etape de finisare, de purificare, de exemplu, pentru a închide fluxul și nu în blocul try. După executarea programului în cele din urmă continuă cu următoarea linie de cod.

Schematic, totul arată astfel:

și nu pot exista blocuri de captură, astfel:

sau fără un bloc în final:

Să ne gândim ce se întâmplă atunci când apare o excepție.

Când are loc excepția, obiectul excepție generat, care conține informații despre această excludere, care este transferată în sistem. În astfel de cazuri noi spunem că sootvestsvuyuschaya parte a programului aruncă o excepție, care este, Se creează un obiect excepție și o trece la sistem. Apoi începe activitatea sistemului, dar înainte de Să-l examinăm, trebuie să înțelegem ce stiva de apel.

Stiva de apel (stiva de apel)

Call Stack (stiva de apel) - este secvența de apeluri de metode de metoda principală la metoda de interes pentru noi. Să considerăm un exemplu ipotetic. Există o clasă:

Aici, un astfel de stiva de apel: cauze principale methodA (), methodA () cauze methodB (), methodB () cauze metode ().

Dacă methodA () a avut mai multe blocuri de captură, sistemul va selecta primul bloc de potrivire, adică, un tip bloc de un argument care se potrivește cu tipul de excepție.

Controlate (verificate) excepții. De exemplu, erorile de intrare. Astfel de excepții de prelucrare recomandate;

Eroare (eroare). Această excludere cauzată de externe, în ceea ce privește cererea, motivele de aplicare a acestora și, de regulă, nu se ocupa. Aceste excepții sunt definite de clasa de eroare sau subclasa;

excepții runtime (excepție de execuție). De exemplu, erori în cod. Aceste excepții sunt definite de clasa RuntimeException sau subclase. Aceste excepții pot fi manipulate.

Excepții de tip al doilea și al treilea numit necontrolate (neverificate) excepții.

Metoda în sine poate arunca o excepție. Pentru a face acest lucru, utilizați declarația arunca și obiectul excepție în ea. exemplu:

Dacă acest exemplu, o <10, то будет выброшено исключение AnException, так, как если бы здесь произошла соответствующая ошибка.

Arunca o declarație de excepție de la margine de corp și poate fi orabotchika alte excepții. Deci, există un lanț de excepții (excepții înlănțuite). exemplu:

Toate clasele de excepție înapoi la clasa Dispensabil. Succesorii săi imediate sunt de eroare și de excepție clase. Excepție de la RuntimeException apar și toate clasele de excepții controlate.

Știm deja că excepțiile de sistem de procesare de eroare de tip, de obicei, noi nu ating.

RuntimeException tip excepție este o eroare în codul. Astfel de excepții pot fi manipulate, dar este mai bine doar pentru a repara codul de eroare.

Excepții de tip Excepție indică o problemă, dar ele nu sunt grave sistemice. ar trebui să fie manipulate astfel de erori.

Puteți crea propriile clase de excepție ca o excepție nasledkov directă sau nu. Realizate la numele acestor clase pentru a adăuga Exception cuvânt.

În cazul în care tipul de argument clauza de captură este o excepție. sootvestsvuyuschy handler excepție va fi capabil de a capta toate excepțiile RuntimeException controlate și tipul de excepție. Deci, puteți face dacă nu există cerințe speciale la tratare sau dacă este posibil să apară excepții neașteptate. Dar, dacă aveți nevoie de o abordare specială, este mai bine să folosească moștenitorilor excepție.

Cum de a crea o clasă de excepție?

Deci, cum ar trebui să se ocupe de excepții controlate, clasa noastră va moșteni de excepție.

În concluzie, am cita un exemplu de cod complet, care a fost discutat în această secțiune. Clasa principală:

excepții Clasa AnException:

excepții Clasa NextException:

articole similare