Introduksjon til unntakssituasjoner i JavaScript
Nå skal vi se på unntakssituasjoner i JavaScript. Til å begynne med vil jeg gjøre en introduksjon, med eksempler på unntakssituasjoner generelt for alle programmeringsspråk, og deretter skal vi finne ut hvordan det forholder seg i JavaScript.
Når vi skriver programmene våre, regner vi implisitt med at alle de programvare-tekniske mekanismene vi bruker, vil fungere korrekt.
Dette er imidlertid ikke alltid tilfellet. Under overføring av data over nettverket oppstår det brudd i forbindelsen og dataene kommer til oss i en ukorrekt form, eller kommer ikke i det hele tatt. Ved skriving av en fil viser det seg at plassen som er tildelt oss på harddisken er oppbrukt, og filen kan ikke skrives. Ved lesing av en fil viser det seg at en slik fil ikke eksisterer og vi har ingen sted å lese fra. Ved utskrift av data til en skriver skjer det brudd i kabelen som forbinder skriveren og datamaskinen.
Alle de beskrevne situasjonene har en felles essens: det oppstår en feil som fører til umulighet eller meningsløshet ved fullføringen av den planlagte operasjonen.
Det er også situasjoner der det oppstår en feil som ikke er et brudd. For eksempel, du spør brukeren om hans/hennes e-post, og han/hun skriver inn e-post i et ugyldig format. Det er klart at programmet vårt ikke kan fortsette å behandle e-posten, siden den ikke er korrekt. Men likevel er dette ikke en unntakssituasjon. Programmet vårt kan selv rette opp situasjonen: det vil vise en feilmelding og brukeren kan gjenta innskrivingen.
Faktisk er forskjellen mellom et brudd og ikke et brudd veldig uklar. En hendelse som ett program kan tolke som en unntakssituasjon, kan et annet program tolke som en feil som det kan håndtere.
Kriteriet her er som følger: hvis programmet ditt ved oppstått problem kan fortsette å utføre det den er laget for, så er det ikke en unntakssituasjon, men hvis den ikke kan - så ja, da er det et unntak.
For eksempel, vi har et program som skal spørre om brukerens e-post. Hvis brukeren skrev inn e-post i et ugyldig format - er det ikke et brudd. Dette er et forventet problem og programmet vårt vil spørre brukeren om e-post så mange ganger, inntil han/hun skriver den inn korrekt.
La oss si at programmet vårt, som spør om e-post, også må sende denne korrekte e-posten over internett. Da viser det seg at internett ikke fungerer. Dette er allerede et problem: programmet vil på ingen måte kunne sende data over internett hvis internett ikke fungerer. Programmet kan likevel fortsette sin utførelse: det kan vise informasjon om problemet, prøve å sende på nytt etter en stund, og så videre. Men disse handlingene er ikke helt det programmet var laget for, siden hovedhandlingen - sending av e-post - kan ikke programmet gjøre.
Svært ofte avhenger det av programmeringsspråket om det er en unntakssituasjon eller ikke. I mange språk, hvis det plutselig skjer en divisjon på null - regnes dette som et unntak (siden man ikke kan dele på null), men i JavaScript - regnes det ikke (i JavaScript kan man dele på null).