Chyby v programování jsou nevyhnutelné. Dříve nebo později vaše aplikace zaznamená nějaké neočekávané chování. Jako každý jiný programovací jazyk i JavaScript vyvolává chyby, když se ve vašem kódu něco pokazí.
Chyby narušují normální chod aplikace. Ale také pomáhají chránit vaši aplikaci před nepředvídatelným chováním. Vědět, jak správně zacházet s chybami, je zásadní.
Proč je řešení chyb důležité?
Zpracování chyb přispívá k lepší uživatelské zkušenosti. Výchozí a někdy i podrobné chyby JavaScriptu můžete zaměnit za vlastní chybové zprávy čitelnější pro člověka. Můžete elegantně ošetřit příčiny některých chyb a nechat svůj program v chodu, než aby byl ukončen.
Zpracování chyb je také užitečné během vývoje. Můžete zachytit běhovou chybu a udělat s ní něco užitečného, např přihlášením do konzole prohlížeče. To je elegantnější než chyba způsobující havárii a nevědět, kde nebo proč k chybě došlo.
Struktura vestavěných chyb JavaScriptu
Chyby JavaScriptu jsou objekty se třemi vlastnostmi:
- název: Toto je název chyby. Například chybějící název proměnné vyvolá chybu s názvem SyntaxError.
- zpráva: Toto je tělo zprávy a textově vysvětluje chybu.
- způsobit: Tuto vlastnost můžete použít s vlastními chybami ke sledování zásobníku volání.
Běžné typy chyb v JavaScriptu
Zde jsou některé běžné chyby nalezené v JavaScriptu.
Chyba syntaxe
Když se JavaScript pokouší interpretovat váš kód, může dojít k chybám syntaxe. Pokud váš kód neodpovídá správné syntaxi, vyvolá chybu. Některé běžné chyby, které mohou způsobit chyby syntaxe, jsou:
- Chybí názvy proměnných.
- Chybí „}“ za funkcí.
- Chybí „“)“ za podmínkou.
ReferenceError
Referenční chyby se vyskytují, když se o to program pokouší odkazovat na proměnnou která je nedostupná nebo mimo rozsah.
TypeError
JavaScript může vyvolat chybu typu, když nemůže provést operaci, protože typ, který očekává, se liší od typu, který obdrží.
URIError
K této chybě dochází, pokud nesprávně použijete globální funkci zpracování URI – jako je decodeURIComponent(). V důsledku toho se kódování nebo dekódování nezdaří.
AggregateError
Tato chyba se používá k reprezentaci více chyb zabalených do jedné. Použijte jej, když chcete vyhodit mnoho chyb najednou. Například Promise.any() může vyvolat AggregateError(), když odmítnou všechny předané sliby.
Interní chyba
InternalError je vyvolána, když dojde k chybě uvnitř enginu JavaScript.
RangeError
Některé funkce určují rozsah hodnot, které můžete předat jako argumenty. K této chybě dochází, když se pokusíte předat hodnotu, která není zahrnuta v daném rozsahu.
Ošetření chyb při pokusu... Catch Block
JavaScript poskytuje vestavěnou funkci zpracování výjimek s zkuste…chytit…konečně blok. Umožňuje také upozornit na své vlastní chyby pomocí házet operátor.
Blok try…catch můžete použít ke zpracování chyb, ke kterým dochází během běhu. Do bloku try zapíšete platný kód, u kterého očekáváte správné provedení. Do bloku catch můžete napsat kód pro zpracování chyb.
Snaž se {
// Platný kód Javascript
} úlovek (chyba) {
// Chyba zpracování
} Konečně {
// Provede se, i když dojde k chybě
}
Blok catch je ignorován, pokud kód v bloku try nevyvolává žádné chyby. Pokud vyvolá chybu, provedení skočí do bloku catch. Kód v bloku Konečně se spustí, ať dojde k chybě nebo ne. Tento blok není povinný, takže jej vynechejte, pokud jej nepotřebujete.
Kód, který zahrnete do bloku try, musí být platný. Pokud tomu tak není, JavaScript vyvolá chybu analýzy.
Podívejme se na praktický příklad:
Snaž se {
řídicí panel.log (text)
} úlovek (chyba) {
řídicí panel.log(chyba.zpráva)
} Konečně {
console.log("Bude provedeno bez ohledu na to")
}
Tento program se pokusí zaprotokolovat hodnotu textové proměnné. Protože tato proměnná není definována, program vyvolá chybu. Tato chyba je vytištěna na konzole v bloku catch. Blok Konečně se pak spustí a vytiskne vlastní zprávu.
ReferenceError: text není definován
Bude provedeno bez ohledu na to
V situacích, kdy potřebujete upozornit na vlastní chybu, použijte házet operátor.
Zvažte tento příklad, který vyvolá chybu, pokud jsou data nepravdivá:
konst data = getData()
Snaž se {
if (!data) {
házet "Žádná data"
}
řídicí panel.log (data)
// pokračovat
} úlovek(chyba) {
řídicí panel.log (chyba) // "Žádná data"
}
V tomto příkladu program volá funkci getData() a její výsledek přiřadí proměnné data. V bloku try blok vyvolá vlastní chybu, pokud jsou data prázdná. Blok catch tuto chybu zachytí a zaznamená do konzoly.
Házení chyb je při vývoji velmi výhodné. Pomocí vlastní chybové zprávy můžete pochopit, proč vaše aplikace nefunguje podle očekávání.
Jak ukazuje tento příklad, pro chybový objekt můžete použít řetězec. Ve skutečnosti můžete vyvolat jakýkoli JavaScriptový výraz jako chybu. Z důvodu konzistence s vestavěnými chybami však použijte objekt JavaScriptu obsahující název a zprávu.
házet {
název: "Název chyby",
zpráva: "Chybové hlášení"
}
Při vyvolávání chyb můžete také použít vestavěné konstruktory JavaScriptu. Mezi tyto konstruktory patří mimo jiné Error, SyntaxError a ReferenceError.
Chcete-li vyvolat chybu pomocí konstruktoru Error, použijte tento kód:
házetNovýChyba("Žádná data")
Nyní můžete odkazovat na jméno a zprávu.
řídicí panel.log (error.name) // Chyba
řídicí panel.log (chybová.zpráva) // Žádná data
Rozšíření objektu chyby JavaScriptu
Vlastní třída chyb se hodí při zpracování chyb, které neodpovídají objektům, které již poskytuje JavaScript. Můžete například chtít izolovat chybu ověření dat jako konkrétní typ s názvem ValidationError.
Můžete použít a Třída JavaScript ES2015 k vytvoření vlastní třídy chyb.
třídaChyba ověřenírozšiřujeChyba{
konstruktér(zpráva) {
super(zpráva);
toto.jméno = "Chyba ověření";
}
}
Vyhoďte chybu pomocí třídy ValidationError takto:
házetNový ValidationError("Vaše chybová zpráva")
Vyhozená chyba bude objekt s názvem a hodnotami zprávy.
{
název: "Chyba ověření",
zpráva: "Vaše chybová zpráva"
}
Chyby vám pomohou
Zpracování chyb je základní součástí programování bez ohledu na jazyk, který používáte. JavaScript má skvělou podporu pro vyvolávání a chytání chyb ve stylu výjimek. Má také několik vestavěných typů chyb, které můžete zpracovat a použít pro své vlastní případy.
Některé chyby, jako jsou chyby syntaxe, mohou zůstat neodhaleny, když píšete JavaScript v „nedbalém režimu“. Použití přísného režimu umožňuje JavaScriptu zachytit chyby, které by jinak ignoroval.