Curs Javascript

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.

1. Personalizarea erorilor

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"><!--
// 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>
- Daca utilizatorul foloseste o versiune de browser IE care nu suporta Ajax, va fi instiintat exact despre acest lucru.

2. Definirea erorilor cu "throw"

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"><!--
// 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>
- Pentru a vedea rezultatul, click pe:
- Desi scriptul nu are vreo eroare in executie, cand in fereastra Prompt nu este scris un numar intreg, sau e mai mic de 14, declaratiile "throw" din cod vor face ca acestea sa fie identificate de JavaScript ca erori generice (ca cele de executie) si opreste executia script-ului (fara a mai afisa fereastra Alert ce e dupa ele), iar "catch" le preia ca erori de executie, cu mesajul scris special in ele.

"catch" prinde si retine erorile in variabila dintre paranteze (aici "err") ca obiect, acesta are 3 proprietati (explicate si in tutorialul precedent): "name", "description" si "message".
Cu "throw" se poate defini cate o valoare pentru fiecare, cu formula: - Acestea pot fi returnate de cache cu sintaxele: "err.name", "err.description" si "err.message".
Iata un exemplu din care se intelege modul de aplicare:
<script type="text/javascript"><!--
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>
- Ca sa vedeti rezultatul, click pe:

Intre acoladele sale, "throw" poate avea o valoare de tip Sir (string), Boolean (true, false) sau Obiect.

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tag se foloseste pentru a adauga liste in elemente <ul> si <ol>?
<dt> <dd> <li>
<ul>
 <li>http://coursesweb.net/html/</li>
 <li>http://www.marplo.net/html/</li>
</ul>
Care valoare a proprietatii "display" seteaza elementul ca tip bloc si afiseaza un punct in fata?
block list-item inline-block
.some_class {
  display: list-item;
}
Care instructiune JavaScript transforma un obiect in sir JSON.
JSON.parse() JSON.stringify eval()
var obj = {
 "courses": ["php", "javascript", "ajax"]
};
var jsonstr = JSON.stringify(obj);
alert(jsonstr);    // {"courses":["php","javascript","ajax"]}
Indicati clasa PHP folosita pentru a lucra cu elemente HTML si XML in PHP.
stdClass PDO DOMDocument
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>';
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);
$elm = $dochtml->getElementById("dv1");
echo $elm->nodeValue;    // CoursesWeb.net
Indicati forma de Prezent Continuu a verbului "to live" (a trai /a locui)
lived living liveing
I`m living here.
- Traiesc /Locuiesc aici.
Care este forma de Gerunziu (sau Participiu Prezent) a verbului "vivir" (a trai /a locui)?
viviĆ³ vivido viviendo
Estoy viviendo aquĆ­.
- Traiesc /Locuiesc aici.
Definirea si personalizarea erorilor

Last accessed pages

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (269937)
  2. Poezii pentru copii, in engleza (39930)
  3. Accentul si Pronuntia (27617)
  4. Titluri, Paragrafe, Un nou rand, Linie orizontala (32544)
  5. Download carti electronice si programe pentru Limba Engleza (43550)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (976)
  2. Gramatica limbii engleze - Prezentare Generala (631)
  3. Exercitii engleza - English Tests and exercises - Grammar (564)
  4. Prezentul simplu si continuu - Present Tense Simple and Continuous (459)
  5. Coduri pt culori (368)