Kivételkezelés, avagy hibakezelés. A legtöbb programnyelvben van lehetőség a hibák kezelésére, esetleg saját hibaüzenetek létrehozására is. A hibakezelés lényege, hogy az esetlegesen létrejött hibákat megpróbáljuk elkapni, és ‘kulturált’ módon tájékoztatni róluk a felhasználót. pl: angol nyelvű hiba helyett magyarul
A hibakezelés általános szintaxisa:
1 2 3 4 5 6 7 |
try { // Futó program rész } catch (error) { // Hiba esetén lefuttatott rész } finally { // Minden esetben lefutó program rész } |
A JavaScript olyan lehetőséget is kínál, hogy a catch ágon belül több hibát is lekezel különbözőképpen. Erre szolgálnak a Throw metódusok, amikor meghatározott hiba típusoknál továbbterjedés történik.
Példa1. Kérjünk be egy 0-99 közötti számot a felhasználótól. Ha ezen intervallumon kívüli értéket ír, akkor jelezzük számára egy felugró ablakban!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<html> <head> <script language="JavaScript"> function checkAge() { try { // ha nem megengedett érték van a formon // egy hiba üzenet generálódik if (document.forms[0].age.value > 99) { throw RangeError; } else { document.write("A beírt érték a megfelelő!"); } } catch (e) { // elkap minden tovább lökött hibát és kiíratja a hiba típusát alert(e.name); } } </script> </head> <body> <form> <input type="text" name="age"> <input type="button" value="küldés" onclick="checkAge()"> </form> </body> </html> |
Példa2: kérjünk be a felhasználótól egy szót. Ha a beviteli mező üres, vagy nem megfelelő a szó, akkor jelezzük írassunk ki hibaüzenetet!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<html> <head> <script language="JavaScript"> // Készítsünk kettő új hiba objektumot badWordError = new Error ("A beírt szó nem megfelelő!"); noWordError = new Error ("A beviteli mező nem lehet üres"); // általános hibakezelés function mainExceptionHandler(e) { alert (e.message); } function Ellenorzes() { checkWord(); } function checkWord() { try { if (document.forms[0].szoveg.value == "") { throw noWordError; } if (document.forms[0].szoveg.value != "info") { throw badWordError; } if (document.forms[0].szoveg.value == "info") { document.write("Helyes!"); } } catch (e) { // minden más hiba esetén ez a rész fut le mainExceptionHandler(e); } } </script> </head> <body> <form onSubmit="Ellenorzes()"> Kérem a felhasználó nevét: <input type="text" name="szoveg"> <br> <input type="submit" name="submit" value="Küldés"> </form> </body> </html> |