"Hei, Amigo!"

"Hei, Ellie! Hvordan er livet?"

"Utmerket, takk. Hvordan har du det?"

"Flott, i morges ble tonnevis av nye ting forklart for meg."

"Vel, det er flott. Er du ikke sliten?"

"Ja, det er det. Jeg er litt sliten."

"Så var du bare heldig. Jeg ønsket å dekke et stort, komplekst emne i dag, men i siste øyeblikk ombestemte jeg meg og bestemte meg for å dekke et lite, enkelt."

"Liten og enkel? Jeg er klar."

"I dag skal vi undersøke temaet unntak i detalj."

"Snakker du om feilhåndtering?"

"Du bør ikke tenke på unntak som feil. Unntak er mer som rapporter om at "noe uventet har skjedd". Basert på disse rapportene kan du foreslå alternative handlinger."

"Det handler om metoder.  Når du kaller en metode, lover den å gjøre det den ble kalt til å gjøre. "

"Når en metode, uansett grunn, ikke kan gjøre det den ble kalt til å gjøre, må den gi beskjed til den som ringer."

"Med andre ord, det verste som kan skje er at en metode ikke gjør arbeidet sitt og ikke forteller noen om det. Ingenting kan muligens være verre enn det. Du mister kontrollen over situasjonen når det skjer. "

"Når du er en ny programmerer, virker det som om du bare kaller metoder og de er sikker på å gjøre det du ba dem om å gjøre."

"Når du er en erfaren programmerer, vet du at det kan være dusinvis av faktorer som påvirker en metodes evne til å gjøre jobben sin, og at det er mange tilfeller som kan hindre en metode i å fullføre jobben."

"Fra programmererens perspektiv er det tusen ganger bedre hvis et program avsluttes når det støter på en feil enn hvis programmet støter på en feil og deretter fortsetter å fungere (feil) uten at brukeren skjønner hva som skjedde."

"Så programmet som viser noe galt kan være verre enn hvis programmet lukket og mistet all data?"

"Hva fikk deg til å tro at programmet rett og slett viser noe feil? Kanskje programmene har mange feil og alle dataene dine vil gå uopprettelig tapt? Anta at du har skrevet inn tekst i 3 timer, men ingenting av det vil bli lagret fordi en feil som oppsto etter bare to minutter."

"Når en nybegynner programmerer møter unntak, blir han frustrert."

"Men i virkeligheten avslører unntak alle mulige scenarier som han burde ha forutsett, men ikke gjorde."

"Du kan velge å ikke håndtere unntak, og det ville gjøre deg til en dårlig programmerer. Men hvis metodene dine ikke gir unntak, er du ingen programmerer i det hele tatt - fordi du ikke klarte å forstå denne enkle sannheten:"

"En metode gjør enten det den ble skrevet for å gjøre, eller den gir et unntak. Det er ikke noe tredje alternativ!"

"Ok, jeg tror deg. Jeg lover å bruke unntak."

"Flott. Så la meg fortelle deg om hierarkiet av unntak:"

Unntakshierarki, feil - 1

"Unntakshierarkiet er basert på fire klasser."

"Den laveste basisklassen er Throwable ."

" Feil- og unntaksklassene arver det."

" RuntimeException arver unntak ."

" Error- klassen er basisklassen for JVM-feil som StackOverFlow , OutOfMemory , ..."

"Et program kan vanligvis ikke gjenopprette fra slike feil, noe som fører til at det avsluttes."

"Faktisk, hva kan gjøres hvis det ikke er nok minne til at programmet kan fortsette å kjøre normalt eller det har vært en stabeloverflyt?"

" Unntak er basisklassen for alle vanlige unntak kastet av et program.  RuntimeException er en spesiell type unntak som har litt forskjellige regler."

"Hva er de?"

"Det er akkurat det jeg skal forklare nå."

"Som du sikkert husker, faller unntak inn i to kategorier: avmerket og ukontrollert ."

"Hvis en metode kaster sjekkede unntak, må metoden som kaller den pakke kallet inn i en try-catch- blokk. Vel, enten det eller kaste unntaket på nytt (til den som ringer) ved å tydelig indikere kast i metodesignaturen."

"Disse reglene/begrensningene gjelder ikke for ukontrollerte unntak."

"Så, alle unntak som arver unntak anses som sjekket. Bortsett fra unntak som arver RuntimeException, som anses som ukontrollerte."

"Uh-he. Jeg husker at du fortalte meg noe sånt tidligere."

"Amigo! De spør om unntakshierarkiet i hvert intervju . Jeg sier det igjen - hvert intervju . Du må kjenne dette emnet perfekt."

"OK. Jeg skal lese alt igjen og finne ut av det. Takk for at du hjelper meg, Ellie."