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 tag afiseaza textul oblic?
<strong> <pre> <em>
<p>Cursuri, Jocuri, Anime: <em>www.MarPlo.net</em></p>
Care proprietate CSS defineste spatiul dintre continutul elementului si bordura lui?
margin padding position
h3 {
  padding: 2px 0.2em;
}
Clic pe metoda ce returneaza primul element indicat de selectorii specificati.
getElementsByName() querySelector() querySelectorAll()
// preia primul Div cu class="cls", si afiseaza continutul
var elm = document.querySelector("div.cls");
alert(elm.innerHTML);
Indicati variabila PHP ce contine datele din formular trimise cu method="post".
$_SESSION $_GET $_POST
if(isset($_POST["field"])) {
  echo $_POST["field"];
}
Indicati pronumele corespunzator celui din paranteza in propozitia: "(Noi) speak english".
I They We
We speak english.
- Noi vorbim engleza.
Indicati pronumele corespunzator celui din paranteza in propozitia: "(Noi) hablamos español".
Ellos Vosotros Nosotros
Nosotros hablamos español.
- Noi vorbim spaniola.
Definirea si personalizarea erorilor

Last accessed pages

  1. Gramatica limbii engleze - Prezentare Generala (92214)
  2. I sau Me (3223)
  3. Prezent perfect si Prezent perfect continuu - Present perfect and Continuous (31324)
  4. Viitor simplu si continuu - Future Tense Simple and Continuous (17656)
  5. Trecutul simplu si continuu - Past Tense Simple and Continuous (31205)

Popular pages this month

  1. Gramatica limbii engleze - Prezentare Generala (2259)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (871)
  3. Gramatica limbii spaniole. Indrumator si prezentare generala (718)
  4. Exercitii engleza - English Tests and exercises - Grammar (675)
  5. Alphabet and Pronunciation - Alfabetul si pronuntia in limba engleza (606)