In tutorialul anterior e prezentat modul de identificare a erorilor ce apar in scripturile JavaScript in timpul executiei codului, folosind formula "try ... catch". Aceasta afiseaza erorile generic, adica asa cum sunt setate de JavaScript, dar exista si posibilitatea de personalizare sau definire a acestora, dupa cum veti vedea in acest tutorial.
Formula "try ... catch" (cu sau fara "finally") poate fi folosita si pentru crearea de mesaje de eroare personalizate. Acestea se definesc in interiorul acoladei lui "cacth", si pot fi utile cand se verifica posibilitatea folosirii unei anumite functii in browser-ul utilizatorului.
Iata un exemplu in care se verifica daca navigatorul web IE suporta Ajax.
<script type="text/javascript"><!--- Daca utilizatorul foloseste o versiune de browser IE care nu suporta Ajax, va fi instiintat exact despre acest lucru.
// Se testeaza suportul pentru obiectul "ActiveXObject" in navigatoarele web IE
if (window.ActiveXObject) {
try {
ajaxrequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(err) {
try {
ajaxrequest = new ActiveXObject("Microsoft.XMLHTTP");
} //end try intern
catch(err) {
// Se afiseaza mesajul de eroare
alert('Browser-ul dv. IE nu suporta Ajax');
} // end catch intern
} //end catch extern
}
//--></script>
Cu declaratia "throw" se pot defini erori personalizate, care sa poata fi preuate de "catch".
Iata un exemplu practic, in care se verifica varsta scrisa intr-o fereastra Prompt. Daca textul nu e un numar intreg sau varsta e prea mica, genereaza mesaje care vor fi recunoscute si interpretate de JavaScript ca erori (Alte explicatii gasiti in codul scriptului).
<script type="text/javascript"><!--- Pentru a vedea rezultatul, click pe:
// Verificarea varstei printr-o fereastra prompt
try {
// Se afiseaza fereastra Prompt si retine datele scrise in ea
var varsta = prompt('Scrieti varsta dv.');
// Se verifica datele trimise
// Daca nu e numar intreg sau e mai mic de 14, creaza cu "throw" cate un mesaj de eroare pt. fiecare caz
if (isNaN(parseInt(varsta))) throw new Error('Scrieti o varsta valida');
else if (varsta<14) throw new Error('Sunteti prea tanar pt. film');
// Afiseaza o fereastra Alert
alert('Varsta verificata, puteti continua');
}
catch(err) {
// Preia eroarea si afiseaza mesajul legat de ea
alert(err.message)
}
//--></script>
<script type="text/javascript"><!--- Ca sa vedeti rezultatul, click pe:
try {
// Se parcurge o bucla for
for(var i=0; i<8; i++) {
// Cand "i" ajunge la 7 se transmite semnal de eroare, cu datele scrise in "throw"
if (i==7) {
throw {
name: "Date eroare in proprietatea name",
description: "Descriere eroare in proprietatea description",
message: "Mesajul de eroare din message"
}
}
}
}
catch(err) {
// Preia eroarea si afiseaza mesajul legat de ea, din fiecare proprietate
alert('Eroare: '+err.name+ "\n\n Eroare: "+err.description+ "\n\n Eroare: "+err.message);
}
//--></script>
Intre acoladele sale, "throw" poate avea o valoare de tip Sir (string), Boolean (true, false) sau Obiect.
<ul> <li>http://coursesweb.net/html/</li> <li>http://www.marplo.net/html/</li> </ul>
.some_class { display: list-item; }
var obj = { "courses": ["php", "javascript", "ajax"] }; var jsonstr = JSON.stringify(obj); alert(jsonstr); // {"courses":["php","javascript","ajax"]}
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>'; $dochtml = new DOMDocument(); $dochtml->loadHTML($strhtml); $elm = $dochtml->getElementById("dv1"); echo $elm->nodeValue; // CoursesWeb.net
I`m living here. - Traiesc /Locuiesc aici.
Estoy viviendo aquĆ. - Traiesc /Locuiesc aici.