Ohjelmointivirheet ovat väistämättömiä. Ennemmin tai myöhemmin sovelluksesi kohtaa odottamatonta toimintaa. Kuten mikä tahansa muu ohjelmointikieli, JavaScript aiheuttaa virheitä, kun jokin menee pieleen koodissasi.
Virheet häiritsevät sovelluksen normaalia toimintaa. Mutta ne auttavat myös suojaamaan sovellustasi arvaamattomalta käytökseltä. On tärkeää tietää, miten virheitä käsitellään oikein.
Miksi virheiden käsittely on tärkeää?
Virheiden käsittely parantaa käyttökokemusta. Voit vaihtaa JavaScriptin oletus- ja joskus monisanaiset virheet omilla ihmisluettavammilla virheilmoituksilla. Voit käsitellä joidenkin virheiden syitä sulavasti ja pitää ohjelman käynnissä sen sijaan, että lopettaisit sen.
Virheiden käsittelystä on apua myös kehityksen aikana. Voit havaita ajonaikaisen virheen ja tehdä sen kanssa jotain hyödyllistä, kuten kirjaamalla sen selainkonsoliin. Tämä on kauniimpaa kuin virhe, joka aiheuttaa kaatumisen ja tietämättään missä tai miksi virhe tapahtui.
Sisäänrakennettujen JavaScript-virheiden rakenne
JavaScriptin virheet ovat objekteja, joilla on kolme ominaisuutta:
- nimi: Tämä on virheen nimi. Esimerkiksi puuttuva muuttujan nimi aiheuttaa virheen nimeltä SyntaxError.
- viesti: Tämä on viestin runko ja selittää virheen tekstillisesti.
- syy: Voit käyttää tätä ominaisuutta mukautettujen virheiden kanssa seurataksesi puhelupinoa.
Yleiset virhetyypit JavaScriptissä
Tässä on joitain yleisiä JavaScriptin virheitä.
Syntaksivirhe
Syntaksivirheitä voi tapahtua, kun JavaScript yrittää tulkita koodiasi. Se aiheuttaa virheen, jos koodisi ei ole oikean syntaksin mukainen. Joitakin yleisiä virheitä, jotka voivat aiheuttaa syntaksivirheitä, ovat:
- Muuttujien nimet puuttuvat.
- "}" puuttuu funktion jälkeen.
- ")" puuttuu ehdon jälkeen.
ReferenceError
Viitevirheitä tapahtuu, kun ohjelma yrittää viittaa muuttujaan joka ei ole saatavilla tai sen soveltamisalan ulkopuolella.
Tyyppivirhe
JavaScript voi aiheuttaa tyyppivirheen, kun se ei voi suorittaa toimintoa, koska sen odottama tyyppi on eri kuin sen vastaanottama tyyppi.
URIE-virhe
Tämä virhe ilmenee, jos käytät yleistä URI-käsittelytoimintoa, kuten decodeURIComponent()-funktiota, väärin. Tämän seurauksena koodaus tai dekoodaus epäonnistuu.
AggregateError
Tätä virhettä käytetään edustamaan useita virheitä, jotka on kääritty yhteen. Käytä sitä, kun haluat tehdä monta virhettä kerralla. Esimerkiksi Promise.any() voi heittää AggregateError():n, kun kaikki sille annetut lupaukset hylätään.
Sisäinen virhe
InternalError annetaan, kun JavaScript-moottorin sisällä tapahtuu virhe.
RangeError
Jotkut funktiot sanelevat arvoalueen, jonka voit välittää argumentteina. Tämä virhe ilmenee, kun yrität välittää arvon, joka ei sisälly kyseiselle alueelle.
Virheiden käsittely kokeilun avulla... Catch Block
JavaScript tarjoaa sisäänrakennetun poikkeuskäsittelyn toiminnon kanssa yritä… saa kiinni… vihdoinkin lohko. Sen avulla voit myös tuoda esiin omia virheitäsi käyttämällä heittää operaattori.
Voit käyttää try…catch-lohkoa ajon aikana tapahtuvien virheiden käsittelemiseen. Kirjoitat try-lohkoon kelvollisen koodin, jonka odotat suoriutuvan oikein. Catch-lohkoon voit kirjoittaa virheenkäsittelykoodin.
yrittää {
// Kelvollinen Javascript-koodi
} ottaa kiinni (virhe) {
// Käsittele virhe
} vihdoinkin {
// Suoritetaan, vaikka tapahtuu virhe
}
Catch-lohko ohitetaan, jos try-lohkon koodi ei aiheuta virheitä. Jos se aiheuttaa virheen, suoritus hyppää catch-lohkoon. Lopullisen lohkon koodi suoritetaan riippumatta siitä, tapahtuuko virhe vai ei. Tämä lohko ei ole pakollinen, joten jätä se pois, jos et tarvitse sitä.
Try-lohkoon lisäämäsi koodin on oltava kelvollinen. Jos näin ei ole, JavaScript antaa jäsennysvirheen.
Katsotaanpa käytännön esimerkkiä:
yrittää {
konsoli.log (teksti)
} ottaa kiinni (virhe) {
konsoli.Hirsi(virhe.viesti)
} vihdoinkin {
console.log("Toteutetaan riippumatta")
}
Tämä ohjelma yrittää kirjata tekstimuuttujan arvon. Koska kyseistä muuttujaa ei ole määritetty, ohjelma antaa virheen. Tämä virhe on painettu konsoliin kiinnityslohkoon. Lopullinen lohko suoritetaan sitten ja tulostaa oman viestin.
ReferenceError: tekstiä ei ole määritelty
Toteutetaan riippumatta
Tilanteissa, joissa sinun on esitettävä oma virheesi, käytä heittää operaattori.
Harkitse tätä esimerkkiä, joka antaa virheen, jos tiedot ovat vääriä:
konst data = getData()
yrittää {
if (!data) {
heittää "Ei dataa"
}
konsoli.log (data)
// jatkaa
} ottaa kiinni(virhe) {
konsoli.log (virhe) // "Ei dataa"
}
Tässä esimerkissä ohjelma kutsuu getData()-funktiota ja määrittää sen tuloksen datamuuttujalle. Try-lohkossa lohko antaa mukautetun virheen, jos tiedot ovat tyhjiä. Catch-lohko havaitsee virheen ja kirjaa sen konsoliin.
Virheiden heittäminen on erittäin hyödyllistä kehityksen aikana. Voit käyttää mukautettua virheilmoitusta ymmärtääksesi, miksi sovelluksesi ei toimi odotetulla tavalla.
Kuten tämä esimerkki osoittaa, voit käyttää merkkijonoa virheobjektille. Voit itse heittää minkä tahansa JavaScript-lausekkeen virheeksi. Käytä kuitenkin nimen ja viestin sisältävää JavaScript-objektia johdonmukaisuuden vuoksi sisäänrakennettujen virheiden kanssa.
heittää {
nimi: "Virheen nimi",
viesti: "Virheviesti"
}
Voit myös käyttää JavaScriptin sisäänrakennettuja konstruktoreita, kun teet virheitä. Näitä rakentajia ovat muun muassa Error, SyntaxError ja ReferenceError.
Jos haluat tehdä virheen Error-konstruktorilla, käytä tätä koodia:
heittääUusiVirhe("Ei dataa")
Nyt voit viitata nimeen ja viestiin.
konsoli.log (error.name) // Virhe
konsoli.log (error.message) // Ei dataa
JavaScript-virheobjektin laajentaminen
Mukautettu virheluokka on kätevä, kun käsitellään virheitä, jotka eivät vastaa JavaScriptin jo tarjoamia objekteja. Saatat esimerkiksi haluta eristää tietojen vahvistusvirheen tiettynä tyyppinä nimeltä ValidationError.
Voit käyttää a JavaScript ES2015 luokka luodaksesi mukautetun virheluokan.
luokkaaValidation ErrorulottuuVirhe{
rakentaja(viesti) {
super(viesti);
this.name = "Validation Error";
}
}
Heitä virhe käyttämällä ValidationError-luokkaa seuraavasti:
heittääUusi ValidationError("Virheviestisi")
Heitetty virhe on objekti, jolla on nimi ja viestiarvot.
{
nimi: "Validation Error",
viesti: "Virheviestisi"
}
Virheet auttavat
Virheenkäsittely on olennainen osa ohjelmointia, riippumatta siitä, mitä kieltä käytät. JavaScriptillä on suuri tuki virheiden nostamiseen ja havaitsemiseen poikkeusten tyyliin. Siinä on myös useita sisäänrakennettuja virhetyyppejä, joita voit käsitellä ja käyttää omissa tapauksissa.
Jotkin virheet, kuten syntaksivirheet, voivat jäädä huomaamatta, kun kirjoitat JavaScriptiä "huolimaisessa tilassa". Tiukan tilan käyttö sallii JavaScriptin havaita virheet, jotka se olisi muuten jättänyt huomiotta.