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 adauga imagine in pagina web?
<div> <img> <span>
<img src="http://coursesweb.net/imgs/webcourses.gif" width="191" height="63" alt="Courses-Web" />
Care din aceste coduri CSS afiseaza textul inclinat?
font-style: italic; text-decoration: underline; font-weight: 500;
#id {
  font-style: italic;
}
Clic pe functia jQuery care ascunde animat un element HTML.
click() hide() show()
$(document).ready(function() {
  $(".a_class").click(function(){ $(this).hide("slow"); });
});
Clic pe functia definita corect in PHP.
fname function() {} function fname() {} function $fname() {};
function fname($a, $b) {
  echo $a * $b;
}
Indicati forma pentru Prezent Perfect Continuu a verbului "to walk" (a merge).
have walked have been walking be walking
I have been walking for 5 hours.
- Merg pe jos de 5 ore.
Indicati Trecutul Nedefinit pentru verbul "ser" (a fi) la forma Yo.
será sería fui
Yo fui entrenador.
- Am fost antrenor.
Definirea si personalizarea erorilor

Last accessed pages

  1. Verbe modale - Modal verbs - CAN, COULD, MAY, MIGHT, MUST (65591)
  2. Coduri pt culori (66288)
  3. Prezent perfect continuu - Exercitii si teste incepatori (15207)
  4. Prezentul simplu - Exercitii si teste incepatori (66432)
  5. Trecut perfect continuu - Exercitii si teste incepatori (6198)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1249)
  2. Curs HTML gratuit Tutoriale HTML5 (964)
  3. Coduri pt culori (716)
  4. Creare si editare pagini HTML (567)
  5. Conditional IF in Limba Engleza - Fraze Conditionale (522)