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 element HTML adauga continut flash SWF in pagina web?
<object> <div> <script>
<object type="application/x-shockwave-flash" data="file.swf" width="500" height="250">
 <param name="src" value="file.swf" />
 Browser-ul dv. nu suporta SWF.
</object>
Care pseudo-clasa CSS adauga un stil la un camp input de formular cand e cursorul in el?
:active :focus :hover
input:focus {
  background-color: #88fe88;
}
Clic pe instructiunea care transforma un sir JSON in obiect JavaScript.
JSON.stringify(javascript_object) object.toString() JSON.parse(json_string)
var jsnstr = '{"url": "http://coursesweb.net/", "title": "Web Development Courses"}';
var obj = JSON.parse(jsnstr);
alert(obj.url);
Indicati functia PHP care poate crea sau scrie un fisier pe server.
fopen() file_put_contents() file_get_contents()
if (file_put_contents("file.txt", "content")) echo "Fisierul a fost creat";
else echo "Fisierul nu poate fi creat";
Cum se spune "al treilea" in engleza?
threeth third three
I planted the third tree.
- Am plantat al treilea pom.
Cum se spune "al treilea" in spaniola?
segundo tres tercero
Yo planté el tercero árbol.
- Am plantat al treilea pom.
Definirea si personalizarea erorilor

Last accessed pages

  1. Adjective - Exercitii si teste engleza incepatori (5501)
  2. Prezent perfect si Prezent perfect continuu - Present perfect and Continuous (40309)
  3. Coduri pt culori (26904)
  4. Curs HTML gratuit Tutoriale HTML5 (34468)
  5. Creare link-uri (6791)

Popular pages this month

  1. Gramatica limbii engleze - Prezentare Generala (1981)
  2. Prezentul simplu si continuu - Present Tense Simple and Continuous (1681)
  3. Trecutul simplu si continuu - Past Tense Simple and Continuous (1582)
  4. Prezent perfect si Prezent perfect continuu - Present perfect and Continuous (1441)
  5. Conditional IF in Limba Engleza - Fraze Conditionale (1167)