Bevezetés a kivételes helyzetekbe a JavaScript-ben
Most a JavaScript kivételes helyzeteit fogjuk megvizsgálni. Kezdetként bevezetést tartok, amelyben példákat mutatok be a kivételes helyzetekre általában minden programozási nyelv esetében, majd megnézzük, hogyan áll a dolog a JavaScript-ben.
Amikor programjainkat írjuk, hallgatólagosan azzal számolunk, hogy minden általunk használt programozati-technikai mechanizmus megfelelően fog működni.
Ez azonban nem mindig igaz. Adatátvitel közben a hálózaton megszakad a kapcsolat, és az adatok hibás formában érkeznek meg, vagy egyáltalán nem érkeznek meg. Fájl írásakor kiderül, hogy a kijelölt hely a merevlemezen elfogyott, és a fájl nem írható. Fájl olvasásakor kiderül, hogy a fájl nem létezik, és nincs miből olvasnunk. Adatok nyomtatásakor a nyomtatót és a számítógépet összekötő kábel megszakad.
Az összes leírt helyzetnek közös a lényege: valamilyen hiba történik, ami a tervezett művelet befejezésének lehetetlenségéhez vagy értelmetlenségéhez vezet.
Vannak olyan helyzetek is, amikor valamilyen hiba történik, amely nem meghibásodás. Például megkérdezed a felhasználó email címét, és ő helytelen formátumban adja meg az emailt. Nyilvánvaló, hogy programunk nem folytathatja az email feldolgozását, mivel az helytelen. De ez mégsem kivételes helyzet. Programunk magától is helyreállíthatja a helyzetet: kiír egy hibaüzenetet, és a felhasználó megismétli a bevitelét.
Valójában a meghibásodás és a nem meghibásodás közötti különbség meglehetősen elmosódott. Egy eseményt, amelyet egy program kivételes helyzetként értelmezhet, egy másik program úgy értelmezhet, mint valamilyen hiba, amellyel meg tud birkózni.
A kritérium a következő: ha egy probléma felmerülésekor a programod képes folytatni annak végrehajtását, amire szánták, akkor az nem kivételes helyzet, ha pedig nem képes, akkor igen, az kivétel.
Például van egy programunk, amely meg kell kérje a felhasználó email címét. Ha a felhasználó helytelen formátumban adta meg az emailt - az nem meghibásodás. Ez egy várt probléma, és programunk annyiszor fogja megkérdezni a felhasználó email címét, amíg az helyesen meg nem adja.
Tegyük fel, hogy a programunk, amely megkérdezi az email címet, el is kell küldje ezt a helyes email címet az interneten keresztül. Közben kiderül, hogy az internet nem működik. Ez már probléma: a program semmiképpen sem tudja az interneten keresztül elküldeni az adatokat, ha az internet nem működik. A program ennek ellenére folytathatja a végrehajtást: kiírhatja a probléma információit, újra megpróbálhatja az elküldést egy idő múlva, és így tovább. De ezek a műveletek már nem teljesen azok, amire a programot szánták, mivel az alapművelet - az email küldése - a program nem tudja megtenni.
Nagyon gyakran, hogy egy helyzet kivételes-e vagy sem, a programozási nyelvtől függ. Sok nyelvben, ha véletlenül nullával való osztás történik - az kivételnek számít (mivel nullával nem lehet osztani), de a JavaScript-ben - nem számít kivételnek (a JavaScript-ben lehet osztani nullával).