Erorile de programare sunt inevitabile. Mai devreme sau mai târziu, aplicația dvs. va experimenta un comportament neașteptat. Ca orice alt limbaj de programare, JavaScript generează erori atunci când ceva nu merge bine în codul tău.
Erorile perturbă fluxul normal al unei aplicații. Dar, de asemenea, vă ajută să vă protejați aplicația de comportamente imprevizibile. Este crucial să știi cum să gestionezi corect erorile.
De ce este importantă tratarea erorilor?
Gestionarea erorilor contribuie la o experiență îmbunătățită a utilizatorului. Puteți schimba erorile implicite și uneori detaliate ale JavaScript cu mesaje de eroare mai citite de om. Puteți gestiona cu grație cauzele unor erori și puteți menține programul să ruleze, în loc să îl închideți.
Gestionarea erorilor este de asemenea utilă în timpul dezvoltării. Puteți detecta o eroare de rulare și puteți face ceva util cu ea, cum ar fi logând-o în consola browserului. Acest lucru este mai grațios decât eroarea care provoacă un accident și nu se știe unde sau de ce a apărut eroarea.
Structura erorilor încorporate JavaScript
Erorile JavaScript sunt obiecte cu trei proprietăți:
- Nume: Acesta este numele erorii. De exemplu, un nume de variabilă lipsă va genera o eroare numită SyntaxError.
- mesaj: Acesta este corpul mesajului și explică eroarea textual.
- cauză: Puteți utiliza această proprietate cu erori personalizate pentru a urmări stiva de apeluri.
Tipuri comune de erori în JavaScript
Iată câteva erori frecvente găsite în JavaScript.
Eroare de sintaxă
Pot apărea erori de sintaxă atunci când JavaScript încearcă să interpreteze codul dvs. Va genera o eroare dacă codul dvs. nu este conform cu sintaxa corectă. Unele erori comune care pot genera erori de sintaxă sunt:
- Lipsesc nume de variabile.
- Lipsește „}” după o funcție.
- Lipsește „)” după o condiție.
ReferenceError
Erorile de referință apar atunci când un program încearcă face referire la o variabilă care este indisponibil sau în afara domeniului de aplicare.
Eroare de scris
JavaScript poate arunca o eroare de tip atunci când nu poate efectua o operație deoarece tipul pe care îl așteaptă este diferit de cel pe care îl primește.
URIeroare
Această eroare apare dacă utilizați incorect o funcție de gestionare a URI globală, cum ar fi decodeURIComponent(). Ca urmare, codarea sau decodificarea eșuează.
AggregateError
Această eroare este folosită pentru a reprezenta mai multe erori incluse într-una singură. Folosiți-l atunci când doriți să aruncați mai multe erori simultan. De exemplu, Promise.any() poate arunca un AggregateError() atunci când toate promisiunile transmise îi resping.
Eroare internă
Un InternalError este aruncat atunci când apare o eroare în interiorul motorului JavaScript.
RangeError
Unele funcții dictează intervalul de valori pe care le puteți transmite ca argumente. Această eroare apare atunci când încercați să transmiteți o valoare care nu este inclusă în intervalul respectiv.
Gestionarea erorilor cu Încercați... Prinde bloc
JavaScript oferă funcționalitate încorporată de gestionare a excepțiilor cu încercați... prindeți... în sfârșit bloc. De asemenea, vă permite să vă ridicați propriile erori folosind arunca operator.
Puteți folosi un bloc try...catch pentru a gestiona erorile care apar în timpul rulării. Scrieți cod valid pe care vă așteptați să îl executați corect în blocul try. În blocul catch, puteți scrie cod de tratare a erorilor.
încerca {
// Cod Javascript valid
} captură (eroare) {
// Gestionează eroarea
} in cele din urma {
// Execut chiar și atunci când apare o eroare
}
Blocul catch este ignorat dacă codul din blocul try nu generează erori. Dacă generează o eroare, execuția sare la blocul catch. Codul din blocul final rulează indiferent dacă apare sau nu o eroare. Acest bloc nu este obligatoriu, așa că omiteți-l dacă nu aveți nevoie de el.
Codul pe care îl includeți în blocul de încercare trebuie să fie valid. Dacă nu este, JavaScript va genera o eroare de analiză.
Să ne uităm la un exemplu practic:
încerca {
consolă.log (text)
} captură (eroare) {
consolă.Buturuga(eroare.mesaj)
} in cele din urma {
console.log("Va fi executat indiferent")
}
Acest program încearcă să înregistreze valoarea variabilei text. Deoarece acea variabilă nu este definită, programul va arunca o eroare. Această eroare este imprimată pe consolă în blocul catch. Blocul final rulează apoi și imprimă un mesaj propriu.
ReferenceError: textul nu este definit
Va fi executat indiferent
În situațiile în care trebuie să ridicați propria eroare, utilizați arunca operator.
Luați în considerare acest exemplu care aruncă o eroare dacă datele sunt false:
const date = getData()
încerca {
dacă (!date) {
arunca "Nu există date"
}
consolă.log (date)
// continua
} captură(eroare) {
consolă.log (eroare) // "Nu există date"
}
În acest exemplu, programul apelează funcția getData() și atribuie rezultatul acesteia variabilei de date. În blocul try, blocul aruncă o eroare personalizată dacă datele sunt goale. Blocul catch prinde acea eroare și o înregistrează pe consolă.
Aruncarea erorilor este foarte benefică în timpul dezvoltării. Puteți utiliza mesajul de eroare personalizat pentru a înțelege de ce aplicația dvs. nu funcționează conform așteptărilor.
După cum demonstrează acest exemplu, puteți utiliza un șir pentru obiectul de eroare. De fapt, puteți arunca orice expresie JavaScript ca o eroare. Cu toate acestea, de dragul coerenței cu erorile încorporate, utilizați un obiect JavaScript care conține un nume și un mesaj.
arunca {
Nume: "Nume eroare",
mesaj: "Mesaj de eroare"
}
De asemenea, puteți utiliza constructorii încorporați ai JavaScript atunci când aruncați erori. Acești constructori includ Error, SyntaxError și ReferenceError, printre altele.
Pentru a genera o eroare folosind constructorul Error, utilizați acest cod:
aruncanouEroare("Nu există date")
Acum puteți face referire la nume și mesaj.
consolă.log (nume.eroare) // Eroare
consolă.log (mesaj.de eroare) // Nu există date
Extinderea obiectului de eroare JavaScript
O clasă de erori personalizată este utilă atunci când se gestionează erori care nu corespund obiectelor deja furnizate de JavaScript. De exemplu, este posibil să doriți să izolați o eroare de validare a datelor ca un tip specific numit ValidationError.
Puteți folosi a Clasa JavaScript ES2015 pentru a crea o clasă de eroare personalizată.
clasăEroare de validatiese extindeEroare{
constructor(mesaj) {
super(mesaj);
acest.nume = "Eroare de validatie";
}
}
Aruncă o eroare folosind clasa ValidationError astfel:
aruncanou ValidationError ("Mesajul dvs. de eroare")
Eroarea aruncată va fi un obiect cu numele și valorile mesajului.
{
Nume: "Eroare de validatie",
mesaj: "Mesajul dvs. de eroare"
}
Erorile sunt acolo pentru a ajuta
Gestionarea erorilor este o parte fundamentală a programării, indiferent de limbajul pe care îl utilizați. JavaScript are un suport excelent pentru ridicarea și captarea erorilor în stilul excepțiilor. De asemenea, are câteva tipuri de erori încorporate pe care le puteți gestiona și utiliza pentru propriile cazuri.
Unele erori, cum ar fi erorile de sintaxă, pot rămâne nedetectate atunci când scrieți JavaScript în „modul neglijent”. Utilizarea modului strict permite JavaScript să detecteze erori pe care altfel le-ar fi ignorat.