Pogreške u programiranju su neizbježne. Prije ili kasnije, vaša aplikacija će doživjeti neko neočekivano ponašanje. Kao i svaki drugi programski jezik, JavaScript pokreće pogreške kada nešto pođe po zlu u vašem kodu.

Pogreške ometaju normalan tijek aplikacije. Ali oni također pomažu u zaštiti vaše aplikacije od nepredvidivog ponašanja. Ključno je znati kako pravilno postupati s pogreškama.

Zašto je rukovanje pogreškama važno?

Rješavanje pogrešaka doprinosi poboljšanom korisničkom iskustvu. Zadane JavaScriptove i ponekad opširne pogreške možete zamijeniti vlastitim porukama o pogreškama koje su čitljivije ljudima. Možete elegantno riješiti uzroke nekih grešaka i zadržati svoj program u radu umjesto da se zatvori.

Rješavanje pogrešaka također je korisno tijekom razvoja. Možete uhvatiti pogrešku prilikom izvođenja i učiniti nešto korisno s njom, npr zapisujući ga na konzolu preglednika. Ovo je gracioznije od pogreške koja uzrokuje pad i ne zna se gdje ili zašto se pogreška dogodila.

Struktura JavaScript ugrađenih pogrešaka

instagram viewer

JavaScript pogreške su objekti s tri svojstva:

  • Ime: Ovo je naziv greške. Na primjer, naziv varijable koji nedostaje izbacit će pogrešku nazvanu SyntaxError.
  • poruka: Ovo je tijelo poruke i tekstualno objašnjava pogrešku.
  • uzrok: Možete koristiti ovo svojstvo s prilagođenim pogreškama za praćenje hrpe poziva.

Uobičajene vrste pogrešaka u JavaScriptu

Evo nekih uobičajenih pogrešaka pronađenih u JavaScriptu.

Sintaktička pogreška

Sintaktičke pogreške mogu se pojaviti kada JavaScript pokuša protumačiti vaš kod. Pojavit će se pogreška ako vaš kod nije u skladu s ispravnom sintaksom. Neke uobičajene pogreške koje mogu izazvati sintaktičke pogreške su:

  • Nedostaju imena varijabli.
  • Nedostaje “}” nakon funkcije.
  • Nedostaje “)” nakon uvjeta.

ReferenceError

Referentne pogreške nastaju kada program pokuša referenca varijable koji je nedostupan ili izvan opsega.

TypeError

JavaScript može izbaciti pogrešku tipa kada ne može izvršiti operaciju jer je tip koji očekuje drugačiji od onog koji prima.

URIError

Ova se pogreška pojavljuje ako netočno koristite funkciju za rukovanje globalnim URI-jem, poput decodeURIComponent(). Kao rezultat toga, kodiranje ili dekodiranje ne uspijeva.

AggregateError

Ova se pogreška koristi za predstavljanje više pogrešaka umotanih u jednu. Koristite ga kada želite izbaciti mnogo pogrešaka odjednom. Na primjer, Promise.any() može izbaciti AggregateError() kada sva obećanja koja su mu proslijeđena odbiju.

InternalError

InternalError se javlja kada dođe do pogreške unutar JavaScript mehanizma.

RangeError

Neke funkcije diktiraju raspon vrijednosti koje možete proslijediti kao argumente. Ova se pogreška javlja kada pokušate proslijediti vrijednost koja nije uključena u taj raspon.

Rješavanje pogreške s pokušajem... Uhvati blok

JavaScript pruža ugrađenu funkciju rukovanja iznimkama s pokušaj…uhvati…napokon blok. Također vam omogućuje da podignete vlastite pogreške pomoću bacanje operater.

Možete koristiti blok try…catch za obradu grešaka koje se javljaju tijekom izvođenja. U bloku try pišete važeći kod za koji očekujete da će se ispravno izvršiti. U bloku catch možete napisati kod za obradu grešaka.

probati {
// Valjani Javascript kod
} ulov (pogreška) {
// Rukovanje pogreškom
} konačno {
// Izvršava se čak i kada dođe do pogreške
}

Blok catch se zanemaruje ako kôd u bloku try ne izaziva nikakve pogreške. Ako pokrene pogrešku, izvršenje skače na catch blok. Kod u finally bloku se izvodi bez obzira na to se pojavi pogreška ili ne. Ovaj blok nije obavezan, stoga ga izostavite ako vam ne treba.

Kôd koji uključite u blok pokušaja mora biti valjan. Ako nije, JavaScript će izbaciti pogrešku parsiranja.

Pogledajmo praktičan primjer:

probati {
konzola.log (tekst)
} ulov (pogreška) {
konzola.log(greška.poruka)
} konačno {
console.log("Bit će izvršen bez obzira")
}

Ovaj program pokušava zabilježiti vrijednost tekstualne varijable. Budući da ta varijabla nije definirana, program će izbaciti pogrešku. Ova se pogreška ispisuje na konzoli u bloku catch. Blok finally se zatim pokreće i ispisuje vlastitu poruku.

ReferenceError: tekst nije definiran
Bit će izvršen bez obzira

U situacijama kada trebate podići vlastitu pogrešku, koristite bacanje operater.

Razmotrite ovaj primjer koji daje pogrešku ako su podaci netočni:

konst podaci = getData()

probati {
if (!podaci) {
bacanje "Nema podataka"
}

konzola.log (podaci)
// nastaviti
} ulov(pogreška) {
konzola.log (pogreška) // "Nema podataka"
}

U ovom primjeru program poziva funkciju getData() i svoj rezultat dodjeljuje varijabli podataka. U bloku pokušaja, blok izbacuje prilagođenu pogrešku ako su podaci prazni. Blok catch hvata tu grešku i bilježi je u konzolu.

Izbacivanje pogrešaka vrlo je korisno tijekom razvoja. Možete koristiti prilagođenu poruku o pogrešci da biste razumjeli zašto vaša aplikacija ne radi prema očekivanjima.

Kao što ovaj primjer pokazuje, možete koristiti niz za objekt pogreške. Zapravo možete izbaciti bilo koji JavaScript izraz kao pogrešku. Međutim, radi dosljednosti s ugrađenim pogreškama, koristite JavaScript objekt koji sadrži naziv i poruku.

bacanje {
Ime: "Naziv greške",
poruka: "Poruka o pogrešci"
}

Također možete koristiti JavaScript ugrađene konstruktore kada izbacite pogreške. Ovi konstruktori između ostalih uključuju Error, SyntaxError i ReferenceError.

Za izbacivanje pogreške pomoću konstruktora pogreške upotrijebite ovaj kod:

bacanjenoviGreška("Nema podataka")

Sada možete referencirati ime i poruku.

konzola.log (greška.naziv) // Pogreška
konzola.log (greška.poruka) // Nema podataka

Proširenje JavaScript objekta pogreške

Prilagođena klasa pogreške korisna je pri rukovanju pogreškama koje ne odgovaraju objektima koje već nudi JavaScript. Na primjer, možda biste željeli izolirati pogrešku provjere valjanosti podataka kao određenu vrstu pod nazivom ValidationError.

Možete koristiti a JavaScript ES2015 klasa za stvaranje prilagođene klase pogreške.

razredaValidationErrorproteže seGreška{
konstruktor(poruka) {
super(poruka);
ovo.ime = "ValidationError";
}
}

Izbaci pogrešku pomoću klase ValidationError ovako:

bacanjenovi ValidationError("Vaša poruka pogreške")

Izbačena pogreška bit će objekt s imenom i vrijednostima poruke.

{
Ime: "ValidationError",
poruka: "Vaša poruka o pogrešci"
}

Pogreške su tu da pomognu

Rješavanje pogrešaka temeljni je dio programiranja, bez obzira na jezik koji koristite. JavaScript ima veliku podršku za podizanje i hvatanje pogrešaka u stilu iznimaka. Također ima nekoliko ugrađenih vrsta pogrešaka koje možete obraditi i koristiti za vlastite slučajeve.

Neke pogreške poput sintaktičkih pogrešaka mogu proći neotkrivene kada pišete JavaScript u "neurednom načinu". Korištenje strogog načina rada omogućuje JavaScriptu da uhvati pogreške koje bi inače zanemario.