 |
| Autor |
Mesaj |
Admin
Administrator

Data inscrierii: 07/Dec/2013
Mesaje: 1103
|
| Citat: |
JavaScript – tratarea erorilor
In timpul navigarii pe internet, ati vazut la un moment dat un alert care va anunta ca exista o eroare de executie si intreba "Do you wish to debug?". Mesajele de eroare pot fi utile pentru programatori dar nu pentru utilizatori. Cand utilizatorii vad erori, de numeroase ori parasesc acea pagina. Ce puteti face pentru a va pastra vizitatorii?
Exista doua modalitati de tratare (catching) a erorilor intr-o pagina web:
-folosind instructiunea try...catch disponibila acum in toate browserele
-folosind evenimentul onerror. Aceasta este solutia standard (mai veche) de tratare a erorilor intr-o pagina web
Instructiunea Try...Catch
Instructiunea try...catch îngăduie testarea unui bloc de cod. Blocul try contine codul de rulat iar blocul catch contine blocul de executat daca se produce o eroare.
try
{
//aici ruleaza codul
}
catch(err)
{
//aici se trateaza erorile
}
Exemplul 1
In exemplul de mai jos o greseala (intentionata) conduce la o eroare. In loc de alert ("Welocome") este scris adddlert("Welcome");
<html><head>
<script type="text/javascript">
function message()
{
adddlert("Welcome guest!");
}
</script></head>
<body>
<input>
</body>
</html>
Daca nu veti primi o eroare explicita sub forma unei casete text atunci urmariti mesajele din status bar (din partea de jos a ferestrei)
Pentru a trata adecvat situatia cand o eroare se realizează puteti adauga o instructiunea try...catch. Cum alert() este scris gresit, eroarea se va cauzează oricum, totusi acum blocul catch "prinde" eroarea si executa un cod special facut pentru astfel de situatii. Codul afiseaza un mesaj de eroare informand utilizatorul ce sa intamplat.
<html><head>
<script type="text/javascript">
var txt="";
//variabila globala care este accesata din indiferent ce bloc
function message()
{
try
{
adddlert("Welcome guest!");
}
catch(err)
{
txt="Draga utilizator, nu te speria, se mai intampla \n\n";
txt+="daca te pricepi si intelegi despre ce poate fi vorba iata si eroarea:\n\n";
txt+=err.description + "\n\n";
alert(txt);
}
}
</script></head>
<body>
<input>
</body></html>
Se observa ca in blocul catch nu sunt tratate doar un anumit tip de erori (se presupune ca nu putem sti ce fel de eroare se poate produce) ;orice eroare este preluata de obiectul err iar proprietatea acestuia .description contine o descriere succinta a erorii .
In urmatorul exemplu vom gasi o modalitate mai elaborata de a trata acceasi problema:
<script type="text/javascript">
var txt=""
function message()
{
try
{
adddlert("Welcome guest!");
}
catch(err)
{
txt="S-a produs finit o eroare.\n\n";
txt+="Apasati OK daca doriti sa ramaneti in aceasta pagina.\n \n";
txt+="sau Cancel pentru a reveni la pagina de inceput.\n\n";
if(!confirm(txt))
{
document.location.href="http://www.w3schools.com/";
}
}
}</script>
In acest exemplu, pe langa explicatiile corespunzatoare erorii, userul poate sa aleaga intre a ramane in pagina sau a se intoarce la pagina de start. Retineti si modul de folosire a dialogului confirm si modalitatea de realizare a transferului catre alta pagina web folosind proprietatea .location.href
The Throw Statement
The throw statement allows you to făcute an exception. If you use this statement together with the try...catch statement, you can control program flow and generate accurate error messages.
Instructiunea throw permite crearea unei exceptii. Impreuna cu instructiunea try...catch, puteti controla modul de executie a programului si acuratetea generarii mesajelor de eroare.
throw(exception)
Exemplu
In exemplul de mai jos se determina valoarea unei variabile numita x. Daca valoarea lui x este mai mare decat 10 sau mai mica decat 0 se va "arunca" o eroare. Eroarea este apoi "prinsa" de blocul catch (observati argumentul er) si un mesaj corespunzator este afisat.
<html>
<body>
<script type="text/javascript">
var x=prompt("Introdu un numar intre 0 si 10:","");
try
{
if(x>10)
{
throw "Err1";
}
else if(x<0)
{
throw "Err2";
}
else if(isNaN(x))
{
throw "Err3";
}
}
catch(er)
{
if(er=="Err1")
{
alert("Error! Valoare prea mare");
}
if(er=="Err2")
{
alert("Error! Valoare prea mica");
}
if(er=="Err3")
{
alert("Error! Valoarea nu e numar");
}
}
</script>
</body>
</html>
Evenimentul onerror
Evenimentul onerror este lansat ori de cate ori apare o eroare in pagina.
Pentru a folosi evenimentul onerror, trebuie creata o functie care sa gestioneze erorile. Apoi apelati functia cu evenimentul onerror. Functia are 3 parametri: mesaj (mesajul de eroare), adresa (adresa paginii care a produs eroarea) si linie (linia unde s-a fabricat eroarea)
<html>
<head>
<script type="text/javascript">
onerror=mesajeErori;
var txt="";
function mesajeErori(mesaj,adresa,linie)
{
txt="A fost o eroare in pagina.\n\n";
txt+="Eroare " + mesaj + "\n";
txt+="URL: " + adresa + "\n";
txt+="Linie: " + linie + "\n\n";
txt+="Click OK to continue.\n\n";
alert(txt);
return true;
}
function message()
{
[/b]adddlert("Welcome guest!")[/b];
}
</script>
</head>
<body>
<input>
</body>
</html> |
|
|
|
|
|
 |
|
|
|
|
Subiectul urmator
Subiectul anterior
Nu puteti crea un subiect nou in acest forum Nu puteti raspunde in subiectele acestui forum Nu puteti modifica mesajele proprii din acest forum Nu puteti sterge mesajele proprii din acest forum Nu puteti vota in chestionarele din acest forum |
Powered by phpBB
© 2001, 2002 phpBB Group
|
|