Poikkeustilanteet JavaScriptissä – johdanto
Tarkastelemme nyt poikkeustilanteita JavaScriptissä. Aluksi teen johdannon, jossa on esimerkkejä poikkeustilanteista yleisesti millä tahansa ohjelmointikielellä, ja sitten selvitetään, kuinka asiat ovat JavaScriptissä.
Kun kirjoitamme ohjelmiamme, oletamme hiljaa, että kaikki käyttämämme ohjelmisto-tekniset mekanismit toimivat oikein.
Näin ei kuitenkaan aina ole. Tietojen siirrossa verkon yli yhteyden katkeaminen ja tiedot saapuvat meille virheellisessä muodossa, tai eivät lainkaan. Tiedostoa tallennettaessa osoittautuu, että kovalevylle varattu tila on loppunut, eikä tiedostoa voida tallentaa. Tiedostoa luettaessa osoittautuu, että sellaista tiedostoa ei ole olemassa, eikä meillä ole mistä lukea. Tietoja tulostettaessa printerille tapahtuu kaapelin katkeaminen, joka yhdistää printerin ja tietokoneen.
Kaikilla kuvatuilla tilanteilla on yhteinen ydin: tapahtuu jonkinlainen vika, joka johtaa suunnitellun toimenpiteen saattamisen mahdottomuuteen tai merkityksettömyyteen.
On myös tilanteita, joissa tapahtuu jonkinlainen virhe, joka ei ole vika. Esimerkiksi kysyt käyttäjältä hänen sähköpostiosoitettaan, ja hän syöttää sähköpostiosoitteen väärässä muodossa. On selvää, että ohjelmamme ei voi jatkaa sähköpostiosoitteen käsittelyä, koska se ei ole oikein. Mutta siitä huolimatta tämä ei ole poikkeustilanne. Ohjelmamme voi itse korjata tilanteen: se tulostaa virheilmoituksen ja käyttäjä toistaa syöttönsä.
Itse asiassa ero vian ja ei-vian välillä on hyvin epämääräinen. Tapahtuma, jonka yksi ohjelma voi tulkita poikkeustilanteeksi, toinen ohjelma voi tulkita jonkinlaiseksi virheeksi, jonka kanssa se voi selviytyä.
Kriteeri on seuraava: jos ongelman ilmaantuessa ohjelmasi voi jatkaa sitä tekemistä, jota varten se on tarkoitettu, niin kyseessä ei ole poikkeustilanne, ja jos ei voi - niin kyllä, tämä on poikkeus.
Esimerkiksi meillä on ohjelma, jonka pitää kysyä käyttäjän sähköpostiosoite. Jos käyttäjä on syöttänyt sähköpostiosoitteen väärässä muodossa - tämä ei ole vika. Tämä on odotettu ongelma ja ohjelmamme kysyy käyttäjältä sähköpostiosoitetta niin monta kertaa, kunnes hän syöttää sen oikein.
Oletetaan, että ohjelmamme, joka kysyy sähköpostiosoitetta, täytyy myös lähettää tämä oikea sähköpostiosoite internetin kautta. Samaan aikaan osoittautuu, että internet ei toimi. Tämä on jo ongelma: ohjelma ei voi millään lähettää tietoja internetin kautta, jos internet ei toimi. Ohjelma voi kuitenkin jatkaa suoritustaan: se voi tulostaa tiedon ongelmasta, yrittää uudelleen lähetystä jonkin ajan kuluttua, ja niin edelleen. Mutta nämä toimet eivät ole aivan sitä, varten mitä ohjelma oli tarkoitettu, koska päätoiminto - sähköpostin lähetys - ohjelma ei pysty suorittamaan.
Hyvin usein se, onko tilanne poikkeus vai ei, riippuu ohjelmointikielestä. Monissa kielissä, jos yhtäkkiä tapahtuu nollalla jakaminen - sitä pidetään poikkeuksena (koska nollalla ei voi jakaa), mutta JavaScriptissä - ei pidetä (JavaScriptissä nollalla voi jakaa).