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
Care tip de <input> creaza un element cu data tip calendar?
type="text" type="date" type="button"
<input type="date" name="set_date" value="2012-10-15" />
Ce proprietate CSS adauga efect de umbre la text?
font-style color text-shadow
h2 {
  text-shadow: 2px 3px 3px #a0a1fe;
}
Clic pe functia care adauga elemente noi la sfarsitul unui array.
pop() shift() push()
var pags = ["lectii", "cursuri"];
pags.push("download", "tutoriale");
alert(pags[2]);            // download
Ce functie aranjeaza un array in ordine crescatoare, dupa chei, mentinand corelatia dintre chei si valori?
asort() ksort() sort()
$lang =[10=>"PHP", 20=>"JavaScript", "site"=>"coursesweb.net");
ksort($lang);
var_export($lang);     // array ("site"=>"coursesweb.net", 10=>"PHP", 20=>"JavaScript")
La adjectivul "big" (mare), care este forma de Comparativ (mai mare)?
biggest biger bigger
He is bigger than his sister.
- El este mai mare decat sora lui.
Care este Comparativul adjectivului "grande" (mare)?
menos grande más grande el más grande
Él es más grande que su hermana.
- El este mai mare decat sora lui.
Definirea si personalizarea erorilor

Last accessed pages

  1. Trecut nedefinit vs Imperfect 3 (937)
  2. Trecutul nedefinit 6 (1062)
  3. Trecutul nedefinit si Imperfect Recapitulare (1596)
  4. Trecut perfect (4643)
  5. Participiu trecut (4345)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (150)
  2. Gramatica limbii spaniole. Indrumator si prezentare generala (71)
  3. Gramatica limbii engleze - Prezentare Generala (40)
  4. Cursuri limba engleza gratuite si lectii online (34)
  5. Creare si editare pagini HTML (32)