"Hallo Amigo!"

"Hallo, Ellie! Hoe is het leven?"

"Uitstekend, dank u. Hoe gaat het?"

"Geweldig, vanmorgen zijn er heel veel nieuwe dingen aan mij uitgelegd."

"Nou, dat is geweldig. Ben je niet moe?"

"Ja, daar is dat. Ik ben een beetje moe."

"Dan heb je gewoon geluk gehad. Ik wilde vandaag een groot, complex onderwerp behandelen, maar op het laatste moment veranderde ik van gedachten en besloot ik een klein, gemakkelijk onderwerp te behandelen."

"Klein en makkelijk? Ik ben er klaar voor."

"Vandaag zullen we het onderwerp Uitzonderingen in detail onderzoeken."

"Heb je het over foutafhandeling?"

"Uitzonderingen moet je niet zien als fouten. Uitzonderingen zijn meer meldingen dat 'er iets onverwachts is gebeurd'. Op basis van deze meldingen kun je alternatieve acties voorstellen."

"Het draait allemaal om methoden.  Als je een methode aanroept, belooft deze te doen waarvoor hij is geroepen. "

"Als een methode, om wat voor reden dan ook, niet kan doen waarvoor hij is geroepen, moet hij dat aan de beller laten weten."

"Met andere woorden, het ergste dat kan gebeuren, is dat een methode zijn werk niet doet en er niemand over vertelt. Niets is erger dan dat. Je verliest de controle over de situatie als dat gebeurt. "

"Als je een nieuwe programmeur bent, lijkt het alsof je gewoon methoden aanroept en ze zullen zeker doen wat je ze vroeg."

"Als je een ervaren programmeur bent, weet je dat er tientallen factoren kunnen zijn die van invloed kunnen zijn op het vermogen van een methode om zijn werk te doen, en dat er veel gevallen zijn die kunnen voorkomen dat een methode zijn werk doet."

"Vanuit het perspectief van de programmeur is het duizend keer beter als een programma stopt wanneer het een fout tegenkomt, dan wanneer het programma een fout tegenkomt en vervolgens (onjuist) blijft werken zonder dat de gebruiker beseft wat er is gebeurd."

"Dus het programma dat iets verkeerds laat zien, is misschien erger dan wanneer het programma wordt afgesloten en alle gegevens verloren gaan?"

"Waarom dacht je dat het programma gewoon iets verkeerd weergeeft? Misschien bevat het programma veel bugs en zijn al je gegevens onherstelbaar verloren? Stel dat je 3 uur lang tekst hebt getypt, maar niets ervan wordt opgeslagen omdat een fout die al na twee minuten optrad."

"Als een beginnende programmeur uitzonderingen tegenkomt, raakt hij gefrustreerd."

"Maar in werkelijkheid onthullen uitzonderingen alle mogelijke scenario's die hij had moeten voorzien, maar niet deed."

"Je zou ervoor kunnen kiezen om geen uitzonderingen aan te pakken en dat zou je een slechte programmeur maken. Maar als je methoden geen uitzonderingen genereren, dan ben je helemaal geen programmeur - omdat je deze simpele waarheid niet begreep:"

"een methode doet ofwel waarvoor het is geschreven, of het genereert een uitzondering. Er is geen derde optie!"

'Oké, ik geloof je. Ik beloof dat ik uitzonderingen zal gebruiken.'

"Geweldig. Laat me je dan vertellen over de hiërarchie van uitzonderingen:"

Uitzonderingshiërarchie, fouten - 1

"De uitzonderingshiërarchie is gebaseerd op vier klassen."

"De laagste basisklasse is Throwable ."

"De klassen Error en Exception nemen het over."

" RuntimeException neemt Exception over ."

"De klasse Error is de basisklasse voor JVM-fouten zoals StackOverFlow , OutOfMemory , …"

"Een programma kan dergelijke fouten meestal niet herstellen, waardoor het wordt beëindigd."

"Inderdaad, wat kan er gedaan worden als er niet genoeg geheugen is om het programma normaal te laten werken of als er een stack overflow is?"

" Uitzondering is de basisklasse voor alle gewone uitzonderingen die door een programma worden gegenereerd.  RuntimeException is een speciaal soort uitzondering met iets andere regels."

"Wat zijn ze?"

"Dat is precies wat ik nu ga uitleggen."

"Zoals u zich waarschijnlijk herinnert, vallen uitzonderingen in twee categorieën: aangevinkt en niet aangevinkt ."

"Als een methode aangevinkte uitzonderingen genereert, moet de methode die deze aanroept de aanroep in een try-catch- blok plaatsen . Welnu, ofwel dat ofwel de uitzondering opnieuw gooien (naar de beller) door duidelijke worpen in de handtekening van de methode aan te geven."

"Deze regels/beperkingen zijn niet van toepassing op ongecontroleerde uitzonderingen."

"Dus alle uitzonderingen die Exception erven, worden als gecontroleerd beschouwd. Behalve uitzonderingen die RuntimeException erven, die als niet-gecontroleerd worden beschouwd."

'Uh-huh. Ik herinner me dat je me eerder zoiets vertelde.'

"Amigo! Ze vragen in elk interview naar de uitzonderingshiërarchie . Ik zeg het nog een keer - elk interview . Je moet dit onderwerp perfect kennen."

'Oké. Ik zal alles nog eens lezen en uitzoeken. Bedankt voor je hulp, Ellie.'