Uvod v izjemne situacije v JavaScript
Trenutno bomo obravnavali izjemne situacije v JavaScript. Za začetek bom naredil nekaj uvoda, v katerem bodo primeri izjemnih situacij na splošno za vse programske jezike, nato pa bomo ugotovili, kako stvari stojijo v JavaScript.
Ko pišemo naše programe, implicitno računamo na to, da bodo vsi programsko-tehnični mehanizmi, ki jih uporabljamo, delovali pravilno.
Vendar to ni vedno tako. Pri prenosu podatkov prek omrežja pride do prekinitve povezave in podatki pridejo do nas v nepravilni obliki, ali sploh ne pridejo. Pri pisanju datoteke se izkaže, da je namenjeni prostor na trdem disku zamanj, in datoteke ni mogoče zapisati. Pri branju datoteke se izkaže, da takšne datoteke ni in nimamo od koga brati. Pri tiskanju podatkov na tiskalniku pride do prekinitve kabla, ki povezuje tiskalnik in računalnik.
Vse opisane situacije imajo skupno bistvo: pride do neke okvare, ki vodi v nemogočnost ali nesmiselnost zaključka načrtovane operacije.
Obstajajo tudi situacije, v katerih pride do neke napake, ki ni okvara. Na primer, vprašate uporabnika za njegov email, in on vnese email v nepravilni obliki. Jasno je, da naš program ne more nadaljevati obdelave emaila, ker ni pravilen. Toda kljub temu to ni izjemna situacija. Naš program lahko sam popravi situacijo: izpisal bo sporočilo o napaki in uporabnik bo ponovil svoj vnos.
Pravzaprav je razlika med okvaro in ne okvaro precej nejasna. Dogodek, ki ga en program lahko obravnava kot izjemno situacijo, lahko drug program obravnava kot neko napako, s katero se lahko spopade.
Merilo je tukaj naslednje: če lahko ob pojavu težave vaš program nadaljuje izvajanje tega, za kar je namenjen, potem to ni izjemna situacija, če pa ne more - potem je, to je izjema.
Na primer, imamo program, ki mora vprašati uporabnika za email. Če uporabnik vnese email v nepravilni obliki - to ni okvara. To je pričakovana težava in naš program bo vprašal uporabnika za email tolikokrat, dokler ga ne vnese pravilno.
Naj naš program, ki sprašuje email, mora tudi poslati ta pravilen email prek interneta. Ob tem se izkaže, da internet ne deluje. To je že težava: program nikakor ne bo mogel poslati podatkov prek interneta, če internet ne deluje. Program lahko kljub temu nadaljuje svoje izvajanje: lahko izpiše informacijo o težavi, ponovi poskus pošiljanja čez nekaj časa, in tako naprej. Toda ta dejanja niso povsem tisto, za kar je bil program namenjen, saj glavnega dejanja - pošiljanja emaila - program ne more opraviti.
Zelo pogosto je, ali je situacija izjemna ali ne, odvisno od programskega jezika. V mnogih jezikih, če pride do deljenja z nič - se to šteje za izjemo (ker z nič ni mogoče deliti), toda v JavaScript - se ne šteje (v JavaScript je mogoče deliti z nič).