Introduktion til undtagelser i JavaScript
Nu skal vi se på undtagelser i JavaScript. Til at starte med vil jeg lave en introduktion, hvor der vil være eksempler på undtagelser generelt for enhver programmeringssprog, og derefter finde ud af, hvordan det forholder sig i JavaScript.
Når vi skriver vores programmer, regner vi implicit med, at alle de programmatisk-tekniske mekanismer, vi bruger, vil arbejde korrekt.
Dette er dog ikke altid tilfældet. Under overførsel af data over netværket opstår der afbrudt forbindelse, og data kommer til os i en ukorrekt form, eller slet ikke. Ved skrivning af en fil viser det sig, at den plads på harddisken, der er tildelt os, er opbrugt, og filen kan ikke skrives. Ved læsning af en fil viser det sig, at sådan en fil ikke eksisterer, og vi har ingen steder at læse fra. Ved udskrivning af data til en printer sker der et brud på kablet, der forbinder printeren og computeren.
Alle de beskrevne situationer har en fælles essens: der opstår en fejl, der fører til umuligheden eller meningsløsheden af at fuldføre den planlagte operation.
Der er også situationer, hvor der opstår en fejl, der ikke er et nedbrud. For eksempel, du spørger brugeren om hans email, og han indtaster email i et ukorrekt format. Det er klart, at vores program ikke kan fortsætte med at behandle email, da den ikke er korrekt. Men ikke desto mindre er dette - ikke en undtagelsessituation. Vores program kan selv rette situationen: den vil vise en fejlmeddelelse og brugeren vil gentage sin indtastning.
Faktisk er forskellen mellem et nedbrud og ikke-nedbrud ret flydende. En begivenhed, som det ene program kan opfatte som en undtagelsessituation, kan et andet program opfatte som en fejl, som det kan håndtere.
Kriteriet her er følgende: hvis ved opståen af problemer dit program kan fortsætte med at udføre det, som det er designet til, så er det ikke en undtagelsessituation, og hvis det ikke kan - så ja, det er en undtagelse.
For eksempel, vi har et program, som skal spørge om brugerens email. Hvis brugeren har indtastet email i et ukorrekt format - er det ikke et nedbrud. Dette er et forventet problem, og vores program vil spørge brugeren om email så mange gange, indtil han indtaster det korrekt.
Lad os sige, at vores program, som spørger om email, også skal sende denne korrekte email over internettet. Det viser sig så, at internettet ikke virker. Dette er allerede et problem: programmet vil på ingen måde kunne sende data over internettet, hvis internettet ikke virker. Programmet kan ikke desto mindre fortsætte sin udførelse: det kan vise information om problemet, gentage forsøget på afsendelse efter et stykke tid, og så videre. Men disse handlinger er ikke helt, hvad programmet var designet til, da hovedhandlingen - afsendelse af email - ikke kan udføres af programmet.
Meget ofte afhænger det af, om det er en undtagelsessituation eller ej, af programmeringssproget. I mange sprog, hvis der pludselig sker en division med nul - betragtes det som en undtagelse (da man ikke kan dividere med nul), men i JavaScript - betragtes det ikke som det (i JavaScript kan man dividere med nul).