<body>
<script language="JavaScript" type="text/javascript">
<!--
raspuns = prompt("Introduceti un numar:", "")
try
{
if (!raspuns || isNaN(raspuns))
{
throw new Error("Nu este un numar valid")
}
alert("Radacina patrata a numarului " + raspuns + " este " + Math.sqrt(raspuns))
}
catch(errMsg)
{
alert(errMsg.message)
}
-->
</script>
</body>Să încerc în continuare să explic scriptul de mai sus.
raspuns = prompt("Introduceti un numar:", "")
Afișeaza un prompter normal în care se cere să introduceți un număr.
try
{
Dacă nu a fost introdus un număr se preia mesajul inițial de eroare și se schimbă cu altul. În cadrul instrucțiunii try se verifică dacă utilizatorul a introdus sau nu un număr.
if (!raspuns || isNaN(raspuns))
{
throw new Error("Nu este un numar valid")
}
Aici se verifică dacă utilizatorul a introdus ceva "!raspuns" sau dacă a introdus orice altceva în afară de număr "isNaN(raspuns)"
Dacă expresia "!raspuns" este adevarată, atunci utilizatorul nu a introdus nimic (a apăsat direct enter).
Metoda JavaScript isNaN verifică dacă parametrul care îi este pasat este sau nu numeric (Not a Number). Dacă isNaN() returnează adevărat, știm că valoarea nu este validă. Oricare ar fi cazul, trebuie să "lansam" (throw) o eroare: în acest context îi vom spune utilizatorului că nu a introdus un număr. Odată ce o eroare a fost lansată, JavaScript iese din blocul de cod try și caută instrucțiunea catch (prinde) corespunzătoare. Se sare peste toate celelalte linii de cod aflate între throw și catch.
alert("Radacina patrata a numarului " + raspuns + " este " + Math.sqrt(raspuns))
În cazul în care utilizatorul a introdus corect un număr se afișează rădăcina pătrată a numărului.
}
Aici se închide blocul try.
catch(errMsg)
{
alert(errMsg.message)
}
Aici, în cazul în care a fost lansată o eroare se utilizează blocul catch. Variabila errMsg este pasată ca parametru, și este afișată partea de mesaj (message) a erorii. Codul din cadrul blocului catch nu va fi executat decât dacă în timpul execuției a fost lansată o eroare.
Acest cod are și o parte opțională, și anume după catch se mai poate pune un bloc final {} care poate conține instrucțiuni care se execută indiferent dacă blocul try lansează sau nu o eroare.