"Bună, Amigo!"

"Bună, Ellie! Cum e viața?"

"Excelent, mulțumesc. Ce mai faci?"

„Genial, în această dimineață mi s-au explicat tone de lucruri noi.”

"Ei bine, asta e grozav. Nu ești obosit?"

"Da, asta e. Sunt puțin obosit."

"Atunci tocmai ai avut noroc. Am vrut să tratez astăzi un subiect amplu și complex, dar în ultimul moment m-am răzgândit și am decis să acopăr unul mic și ușor."

"Mic și ușor? Sunt gata."

„Astăzi vom examina în detaliu subiectul excepțiilor ”.

„Vorbiți despre gestionarea erorilor?”

„Nu ar trebui să vă gândiți la excepții ca la erori. Excepțiile sunt mai degrabă ca rapoartele că „s-a întâmplat ceva neașteptat”. Pe baza acestor rapoarte, puteți propune acțiuni alternative.”

„Totul ține de metode.  Când apelezi la o metodă, ea promite să facă ceea ce a fost chemat să facă.

„Când o metodă, indiferent de motiv, nu poate face ceea ce a fost chemat să facă, trebuie să informeze apelantul.”

„Cu alte cuvinte, cel mai rău lucru care s-ar putea întâmpla este ca o metodă să nu-și facă treaba și să nu spună nimănui despre ea. Nimic nu ar putea fi mai rău decât atât. Pierzi controlul asupra situației atunci când se întâmplă asta.

„Când ești un programator nou, se pare că apelezi la metode și cu siguranță vor face ceea ce le-ai cerut să facă.”

„Când ești un programator cu experiență, știi că pot exista zeci de factori care afectează capacitatea unei metode de a-și face treaba și că există o mulțime de cazuri care ar putea împiedica o metodă să-și termine treaba.”

„Din perspectiva programatorului, este de o mie de ori mai bine dacă un program se termină atunci când întâlnește o eroare decât dacă programul întâmpină o eroare și apoi continuă să funcționeze (incorect) fără ca utilizatorul să-și dea seama ce s-a întâmplat”.

„Deci programul care arată ceva greșit ar putea fi mai rău decât dacă programul s-ar fi închis și ar pierde toate datele?”

„Ce te-a făcut să crezi că programul pur și simplu arată ceva incorect? Poate că programele au o mulțime de erori și toate datele tale se vor pierde iremediabil? Să presupunem că ai introdus text timp de 3 ore, dar niciunul nu va fi salvat deoarece eroare care a apărut după doar două minute.”

„Când un programator începător întâlnește excepții, devine frustrat.”

„Dar, în realitate, excepțiile dezvăluie toate scenariile posibile pe care ar fi trebuit să le prevadă, dar nu le-a făcut”.

„Ați putea alege să nu gestionați excepțiile și asta ar face din tine un programator prost. Dar dacă metodele tale nu generează excepții, atunci nu ești deloc programator – pentru că nu ai reușit să înțelegi acest adevăr simplu:”

"o metodă fie face ceea ce a fost scris pentru a face, fie aruncă o excepție. Nu există a treia opțiune!"

"Bine, te cred. Promit să folosesc excepții."

"Genial. Atunci permiteți-mi să vă spun despre ierarhia excepțiilor:"

Ierarhia excepțiilor, erori - 1

„Ierarhia excepțiilor se bazează pe patru clase”.

„Clasa de bază cea mai joasă este Throwable .”

„ Clasele Error și Exception îl moștenesc.”

RuntimeException moștenește Excepția .”

„ Clasa Error este clasa de bază pentru erorile JVM, cum ar fi StackOverFlow , OutOfMemory , …”

„De obicei, un program nu se poate recupera după astfel de erori, ceea ce îl duce la terminare.”

„Într-adevăr, ce se poate face dacă nu există suficientă memorie pentru ca programul să continue să ruleze normal sau a existat o depășire a stivei?”

" Excepția este clasa de bază pentru toate excepțiile obișnuite aruncate de un program.  RuntimeException este un tip special de excepție care are reguli ușor diferite."

"Ce sunt ei?"

— Tocmai asta am să explic acum.

„După cum probabil vă amintiți, excepțiile se împart în două categorii: bifate și nebifate .”

„Dacă o metodă aruncă excepții verificate , atunci metoda care o apelează trebuie să încapsuleze apelul într-un bloc try-catch . Ei bine, fie asta, fie reintroduceți excepția (către apelantul său) indicând în mod clar introducerea semnăturii metodei.”

„Aceste reguli/restricții nu se aplică excepțiilor necontrolate.”

„Deci, toate excepțiile care moștenesc Exception sunt considerate verificate. Cu excepția excepțiilor care moștenesc RuntimeException, care sunt considerate nebifate.”

"Uh-huh. Îmi amintesc că mi-ai spus așa ceva mai devreme."

"Amigo! Ei întreabă despre ierarhia excepțiilor în fiecare interviu . O voi spune din nou - la fiecare interviu . Trebuie să cunoașteți acest subiect perfect."

"OK. O să citesc totul din nou și o să-mi dau seama. Mulțumesc că m-ai ajutat, Ellie."