A programozási hibák elkerülhetetlenek. Előbb vagy utóbb az alkalmazás váratlan viselkedést tapasztal. Mint minden más programozási nyelv, a JavaScript hibákat vet fel, ha valami elromlik a kódban.

A hibák megzavarják az alkalmazás normál működését. De emellett segítenek megvédeni az alkalmazást a kiszámíthatatlan viselkedéstől. Kulcsfontosságú a hibák megfelelő kezelésének ismerete.

Miért fontos a hibakezelés?

A hibakezelés hozzájárul a jobb felhasználói élményhez. A JavaScript alapértelmezett és néha bőbeszédű hibáit kicserélheti saját, ember által olvashatóbb hibaüzenetekkel. Kíméletesen kezelheti egyes hibák okait, és a program leállítása helyett futva tarthatja.

A hibakezelés is hasznos a fejlesztés során. Elkaphat egy futásidejű hibát, és valami hasznosat tehet vele, pl naplózza a böngésző konzolra. Ez kecsesebb, mint az összeomlást okozó hiba, és nem tudni, hol és miért történt a hiba.

A JavaScript beépített hibák szerkezete

A JavaScript hibái három tulajdonságú objektumok:

  • név: Ez a hiba neve. Például egy hiányzó változónév SyntaxError nevű hibát dob.
  • instagram viewer
  • üzenet: Ez az üzenet törzse, és szövegesen magyarázza a hibát.
  • ok: Ezt a tulajdonságot egyéni hibák esetén használhatja a hívási verem nyomon követésére.

A JavaScript gyakori hibatípusai

Íme néhány gyakori hiba a JavaScriptben.

Szintaktikai hiba

Szintaktikai hibák léphetnek fel, amikor a JavaScript megpróbálja értelmezni a kódot. Ez hibát jelez, ha a kód nem felel meg a megfelelő szintaxisnak. Néhány gyakori hiba, amely szintaktikai hibákat okozhat:

  • Hiányzó változónevek.
  • Egy függvény után hiányzik a „}”.
  • Hiányzik a „)” egy feltétel után.

ReferenceError

Hivatkozási hibák akkor fordulnak elő, amikor egy program megpróbálja változóra hivatkozni amely nem elérhető vagy nem tartozik a hatókörbe.

TypeError

A JavaScript típushibát okozhat, ha nem tud végrehajtani egy műveletet, mert a várt típus eltér a kapott típustól.

URIEhiba

Ez a hiba akkor fordul elő, ha egy globális URI-kezelő függvényt – például a decodeURIComponent()-t – helytelenül használ. Ennek eredményeként a kódolás vagy dekódolás meghiúsul.

AggregateError

Ez a hiba több, egybe csomagolt hiba jelzésére szolgál. Használja, ha egyszerre sok hibát szeretne kidobni. Például a Promise.any() dobhat egy AggregateError()-t, amikor az összes neki adott ígéret elutasítja.

Belső hiba

InternalError üzenet jelenik meg, ha hiba történik a JavaScript motoron belül.

RangeError

Egyes függvények diktálják az argumentumként átadható értékek tartományát. Ez a hiba akkor fordul elő, ha olyan értéket próbál átadni, amely nem szerepel ebben a tartományban.

Hibakezelés a próbával... Catch Block

A JavaScript beépített kivételkezelési funkciót biztosít a próbáld… elkapni… végre Blokk. Azt is lehetővé teszi, hogy felvegye saját hibáit a dobás operátor.

A try…catch blokk segítségével kezelheti a futás közben előforduló hibákat. Érvényes kódot ír be a try blokkba, amely várhatóan megfelelően fut. A catch blokkba hibakezelő kódot írhat.

próbálja meg {
// Érvényes Javascript kód
} fogás (hiba) {
// Kezelési hiba
} végül {
// Hiba esetén is végrehajtódik
}

A catch blokkot figyelmen kívül hagyja, ha a try blokkban lévő kód nem okoz hibát. Ha hibát jelez, a végrehajtás a fogási blokkra ugrik. Az utolsó blokkban lévő kód lefut, függetlenül attól, hogy hiba történt-e vagy sem. Ez a blokk nem kötelező, ezért hagyja ki, ha nincs rá szüksége.

A try blokkban szereplő kódnak érvényesnek kell lennie. Ha nem, akkor a JavaScript elemzési hibát dob.

Nézzünk egy gyakorlati példát:

próbálja meg {
konzol.log (szöveg)
} fogás (hiba) {
konzol.log(hiba.üzenet)
} végül {
console.log("Ettől függetlenül kivégzik")
}

Ez a program megpróbálja naplózni a szöveges változó értékét. Mivel ez a változó nincs definiálva, a program hibát fog kiadni. Ez a hiba ki van nyomtatva a konzolra a catch blokkban. Az utolsó blokk ezután lefut, és kiír egy saját üzenetet.

ReferenceError: a szöveg nincs meghatározva
Ettől függetlenül kivégzik

Olyan helyzetekben, amikor saját hibáját kell felhoznia, használja a dobás operátor.

Tekintsük ezt a példát, amely hibát ad, ha az adatok hamisak:

const adatok = getData()

próbálja meg {
if (!data) {
dobás "Nincs adat"
}

konzol.log (adatok)
// folytatni
} fogás(hiba) {
konzol.log (hiba) // "Nincs adat"
}

Ebben a példában a program meghívja a getData() függvényt, és annak eredményét az adatváltozóhoz rendeli. A try blokkban a blokk egyéni hibát dob, ha az adatok üresek. A catch blokk elkapja a hibát, és naplózza a konzolon.

A dobáshibák nagyon előnyösek a fejlesztés során. Az egyéni hibaüzenet segítségével megértheti, miért nem működik az alkalmazás a várt módon.

Amint ez a példa bemutatja, használhat egy karakterláncot a hibaobjektumhoz. Valójában bármilyen JavaScript-kifejezést dobhat hibaként. A beépített hibákkal való összhang érdekében azonban használjon egy nevet és üzenetet tartalmazó JavaScript objektumot.

dobás {
név: "Hiba neve",
üzenet: "Hiba üzenet"
}

A JavaScript beépített konstruktorait is használhatja a hibák kidobásakor. Ezek a konstruktorok többek között az Error, a SyntaxError és a ReferenceError.

Ha hibát szeretne dobni az Error konstruktor használatával, használja ezt a kódot:

dobásújHiba("Nincs adat")

Most már hivatkozhat a névre és az üzenetre.

konzol.log (hiba.név) // Hiba
konzol.log (error.message) // Nincs adat

A JavaScript hibaobjektum kiterjesztése

Az egyéni hibaosztály jól jön, ha olyan hibákat kezel, amelyek nem felelnek meg a JavaScript által már biztosított objektumoknak. Előfordulhat például, hogy egy adatérvényesítési hibát egy ValidationError nevű konkrét típusként szeretne elkülöníteni.

Használhatja a JavaScript ES2015 osztály egyéni hibaosztály létrehozásához.

osztályValidation ErrorkiterjedHiba{
konstruktőr(üzenet) {
szuper(üzenet);
this.name = "Validation Error";
}
}

A ValidationError osztály használatával dobjon ki hibát:

dobásúj ValidationError ("Az Ön hibaüzenete")

A dobott hiba egy objektum lesz a névvel és az üzenet értékeivel.

{
név: "Validation Error",
üzenet: "Az Ön hibaüzenete"
}

A hibák segíthetnek

A hibakezelés a programozás alapvető része, függetlenül attól, hogy melyik nyelvet használja. A JavaScript nagyszerűen támogatja a hibák kiemelését és elkapását a kivételek stílusában. Számos beépített hibatípussal is rendelkezik, amelyeket kezelhet és használhat saját eseteire.

Egyes hibák, például a szintaktikai hibák észrevétlenek maradhatnak, amikor JavaScriptet ír „hanyag módban”. A szigorú mód használata lehetővé teszi, hogy a JavaScript elkapja azokat a hibákat, amelyeket egyébként figyelmen kívül hagyott volna.