"Hej, Amigo!"

"Hej, Ellie! Hvordan er livet?"

"Fremragende, tak. Hvordan har du det?"

"Fint, her til morgen blev tonsvis af nye ting forklaret for mig."

"Nå, det er godt. Du er ikke træt?"

"Ja, der er det. Jeg er lidt træt."

"Så var du bare heldig. Jeg ville gerne dække et stort, komplekst emne i dag, men i sidste øjeblik ændrede jeg mening og besluttede at dække et lille, nemt."

"Lille og let? Jeg er klar."

"I dag vil vi undersøge emnet undtagelser i detaljer."

"Snakker du om fejlhåndtering?"

"Du skal ikke tænke på undtagelser som fejl. Undtagelser er mere som rapporter om, at 'der er sket noget uventet'. På baggrund af disse rapporter kan du foreslå alternative handlinger."

"Det handler om metoder.  Når du kalder en metode, lover den at gøre, hvad den blev kaldt til at gøre. "

"Når en metode, uanset årsagen, ikke kan gøre, hvad den blev kaldt til at gøre, skal den fortælle den, der ringer."

"Med andre ord, det værste, der kan ske, er, at en metode ikke gør sit arbejde og ikke fortæller nogen om det. Intet kan være værre end det. Man mister kontrollen over situationen, når det sker. "

"Når du er ny programmør, ser det ud til, at du bare kalder metoder, og de er sikre på at gøre, hvad du bad dem om."

"Når du er en erfaren programmør, ved du, at der kan være snesevis af faktorer, der påvirker en metodes evne til at udføre sit arbejde, og at der er mange tilfælde, der kan forhindre en metode i at fuldføre sit job."

"Fra programmørens perspektiv er det tusind gange bedre, hvis et program afsluttes, når det støder på en fejl, end hvis programmet støder på en fejl og derefter fortsætter med at arbejde (forkert), uden at brugeren opdager, hvad der skete."

"Så programmet, der viser noget forkert, kan være værre, end hvis programmet lukkede og mistede alle data?"

"Hvad fik dig til at tro, at programmet simpelthen viser noget forkert? Måske har programmerne masser af fejl, og alle dine data vil gå uigenkaldeligt tabt? Antag, at du har skrevet tekst i 3 timer, men intet af det bliver gemt, fordi en fejl, der opstod efter blot to minutter."

"Når en nybegynder programmør støder på undtagelser, bliver han frustreret."

"Men i virkeligheden afslører undtagelser alle de mulige scenarier, som han burde have forudset, men ikke gjorde."

"Du kunne vælge ikke at håndtere undtagelser, og det ville gøre dig til en dårlig programmør. Men hvis dine metoder ikke kaster undtagelser, så er du slet ingen programmør - fordi du ikke forstod denne simple sandhed:"

"en metode gør enten, hvad den blev skrevet for at gøre, eller den kaster en undtagelse. Der er ingen tredje mulighed!"

"Okay, jeg tror på dig. Jeg lover at bruge undtagelser."

"Fantastisk. Så lad mig fortælle dig om hierarkiet af undtagelser:"

Undtagelseshierarki, fejl - 1

"Undtagelseshierarkiet er baseret på fire klasser."

"Den laveste basisklasse er Throwable ."

" Fejl- og Undtagelsesklasserne arver det."

" RuntimeException arver undtagelse ."

" Error- klassen er basisklassen for JVM-fejl såsom StackOverFlow , OutOfMemory , ..."

"Et program kan normalt ikke genoprette efter sådanne fejl, hvilket får det til at afslutte."

"Faktisk, hvad kan der gøres, hvis der ikke er nok hukommelse til, at programmet kan fortsætte med at køre normalt, eller der har været et stak-overløb?"

" Undtagelse er basisklassen for alle almindelige undtagelser, der er smidt af et program.  RuntimeException er en speciel form for undtagelse , der har lidt forskellige regler."

"Hvad er de?"

"Det er lige det, jeg vil forklare nu."

"Som du sikkert husker, falder undtagelser i to kategorier: kontrolleret og umarkeret ."

"Hvis en metode kaster kontrollerede undtagelser, så skal metoden, der kalder den, pakke opkaldet i en try-catch- blok. Tja, enten det eller genkast undtagelsen (til dens kalder) ved tydeligt at angive kast i metodesignaturen."

"Disse regler/begrænsninger gælder ikke for ukontrollerede undtagelser."

"Så alle undtagelser, der arver Undtagelse, betragtes som kontrollerede. Bortset fra undtagelser, der arver RuntimeException, som betragtes som ukontrollerede."

"Øh-huh. Jeg kan huske, at du fortalte mig sådan noget tidligere."

"Amigo! De spørger om undtagelseshierarkiet i hvert interview . Jeg siger det igen - hvert interview . Du skal kende dette emne perfekt."

"OK. Jeg vil læse alt igen og finde ud af det. Tak for hjælpen, Ellie."