Programske napake so neizogibne. Prej ali slej bo vaša aplikacija doživela nekaj nepričakovanega vedenja. Kot kateri koli drug programski jezik tudi JavaScript sproži napake, ko gre kaj narobe v vaši kodi.

Napake motijo ​​normalen potek aplikacije. Pomagajo pa tudi zaščititi vašo aplikacijo pred nepredvidljivim vedenjem. Vedeti, kako pravilno obravnavati napake, je ključnega pomena.

Zakaj je obravnavanje napak pomembno?

Odpravljanje napak prispeva k boljši uporabniški izkušnji. Privzete in včasih podrobne napake JavaScripta lahko zamenjate s svojimi, bolj berljivimi sporočili o napakah. Vzroke nekaterih napak lahko elegantno odpravite in zagotovite, da vaš program deluje, namesto da bi ga zaprli.

Obravnavanje napak je prav tako koristno med razvojem. Lahko ujamete napako med izvajanjem in naredite nekaj koristnega z njo, na primer beleženje v konzolo brskalnika. To je bolj elegantno kot napaka, ki povzroči zrušitev in ne veste, kje in zakaj je do napake prišlo.

Struktura vgrajenih napak JavaScript

instagram viewer

Napake JavaScripta so objekti s tremi lastnostmi:

  • ime: To je ime napake. Na primer, manjkajoče ime spremenljivke bo povzročilo napako, imenovano SyntaxError.
  • sporočilo: To je telo sporočila in besedilno pojasnjuje napako.
  • vzrok: To lastnost lahko uporabite z napakami po meri, da sledite skladu klicev.

Pogoste vrste napak v JavaScriptu

Tukaj je nekaj pogostih napak v JavaScriptu.

Sintaksna napaka

Ko JavaScript poskuša interpretirati vašo kodo, se lahko pojavijo sintaksne napake. Če vaša koda ni v skladu s pravilno sintakso, bo sprožila napako. Nekatere pogoste napake, ki lahko povzročijo sintaksne napake, so:

  • Manjkajo imena spremenljivk.
  • Manjka »}« za funkcijo.
  • Manjka »)« za pogojem.

ReferenceError

Referenčne napake se pojavijo, ko program poskuša sklicevanje na spremenljivko ki ni na voljo ali je izven obsega.

TypeError

JavaScript lahko sproži napako tipa, ko ne more izvesti operacije, ker je tip, ki ga pričakuje, drugačen od tistega, ki ga prejme.

URIError

Do te napake pride, če nepravilno uporabljate globalno funkcijo za obravnavanje URI-jev, kot je decodeURIComponent(). Posledično kodiranje ali dekodiranje ne uspe.

AggregateError

Ta napaka se uporablja za predstavitev več napak, zavitih v eno. Uporabite ga, ko želite izdati več napak hkrati. Na primer, Promise.any() lahko sproži AggregateError(), ko vse obljube, ki so mu bile posredovane, zavrnejo.

Notranja napaka

InternalError se vrže, ko pride do napake znotraj mehanizma JavaScript.

RangeError

Nekatere funkcije narekujejo obseg vrednosti, ki jih lahko posredujete kot argumente. Ta napaka se pojavi, ko poskušate posredovati vrednost, ki ni vključena v ta obseg.

Obravnava napak s poskusom... Catch Block

JavaScript ponuja vgrajeno funkcijo obravnavanja izjem z poskusi…ulovi…končno blok. Omogoča tudi odkrivanje lastnih napak z uporabo metati operater.

Za obravnavo napak, ki se pojavijo med izvajanjem, lahko uporabite blok try…catch. V poskusnem bloku napišete veljavno kodo, za katero pričakujete, da se bo pravilno izvedla. V blok catch lahko napišete kodo za obravnavo napak.

poskusi {
// Veljavna koda Javascript
} ulov (napaka) {
// Obravnava napake
} končno {
// Izvede se tudi, ko pride do napake
}

Blok catch se prezre, če koda v bloku poskusa ne sproži nobene napake. Če sproži napako, izvedba skoči na blok catch. Koda v bloku finally se izvaja ne glede na to, ali pride do napake ali ne. Ta blok ni obvezen, zato ga izpustite, če ga ne potrebujete.

Koda, ki jo vključite v poskusni blok, mora biti veljavna. Če ni, bo JavaScript sprožil napako pri razčlenjevanju.

Poglejmo praktičen primer:

poskusi {
konzola.log (besedilo)
} ulov (napaka) {
konzola.log(napaka.sporočilo)
} končno {
console.log("Bo izvedeno ne glede na to")
}

Ta program poskuša zabeležiti vrednost besedilne spremenljivke. Ker ta spremenljivka ni definirana, bo program vrgel napako. Ta napaka je natisnjena na konzoli v bloku catch. Blok finally se nato zažene in natisne lastno sporočilo.

ReferenceError: besedilo ni definirano
Bo izvedeno ne glede na to

V situacijah, ko morate dvigniti lastno napako, uporabite metati operater.

Razmislite o tem primeru, ki povzroči napako, če so podatki napačni:

konst podatki = getData()

poskusi {
če (!podatki) {
metati "Ni podatkov"
}

konzola.log (podatki)
// nadaljuj
} ulov(napaka) {
konzola.log (napaka) // "Ni podatkov"
}

V tem primeru program pokliče funkcijo getData() in njen rezultat dodeli spremenljivki data. V poskusnem bloku vrže napako po meri, če so podatki prazni. Blok catch ujame to napako in jo zabeleži v konzolo.

Vrženje napak je med razvojem zelo koristno. S sporočilom o napaki po meri lahko razumete, zakaj vaša aplikacija ne deluje po pričakovanjih.

Kot prikazuje ta primer, lahko za objekt napake uporabite niz. Pravzaprav lahko kateri koli izraz JavaScript prikažete kot napako. Vendar pa zaradi doslednosti z vgrajenimi napakami uporabite objekt JavaScript, ki vsebuje ime in sporočilo.

metati {
ime: "Ime napake",
sporočilo: "Obvestilo o napaki"
}

Pri pošiljanju napak lahko uporabite tudi vgrajene konstruktorje JavaScripta. Ti konstruktorji med drugim vključujejo Error, SyntaxError in ReferenceError.

Če želite vrniti napako z uporabo konstruktorja napake, uporabite to kodo:

metatinovoNapaka("Ni podatkov")

Zdaj se lahko sklicujete na ime in sporočilo.

konzola.log (napaka.ime) // Napaka
konzola.log (sporočilo o napaki) // Ni podatkov

Razširitev objekta napake JavaScript

Razred napak po meri pride prav pri obravnavanju napak, ki ne ustrezajo objektom, ki jih že nudi JavaScript. Napako pri preverjanju podatkov boste na primer želeli izolirati kot posebno vrsto, imenovano ValidationError.

Uporabite lahko a Razred JavaScript ES2015 ustvarite razred napak po meri.

razredValidationErrorse raztezaNapaka{
konstruktor(sporočilo) {
super(sporočilo);
to.ime = "ValidationError";
}
}

Izdajte napako z uporabo razreda ValidationError, kot je ta:

metatinovo ValidationError("Vaše sporočilo o napaki")

Vržena napaka bo objekt z imenom in vrednostmi sporočila.

{
ime: "ValidationError",
sporočilo: "Vaše sporočilo o napaki"
}

Napake so v pomoč

Odpravljanje napak je temeljni del programiranja, ne glede na jezik, ki ga uporabljate. JavaScript ima odlično podporo za prikazovanje in lovljenje napak v slogu izjem. Ima tudi več vgrajenih vrst napak, ki jih lahko obravnavate in uporabite za svoje primere.

Nekatere napake, kot so sintaksne napake, lahko ostanejo neodkrite, ko pišete JavaScript v »površnem načinu«. Uporaba strogega načina omogoča JavaScriptu, da ujame napake, ki bi jih drugače prezrl.