Výukový program JS

JS HOME Úvod do JS JS Kam vést Výstup JS JS prohlášení Syntaxe JS Komentáře JS JS proměnné JS Let JS Const Operátoři JS JS aritmetika Zadání JS JS datové typy Funkce JS JS objekty Události JS JS struny JS String Methods JS String Search Šablony řetězců JS JS čísla Metody čísel JS JS Arrays Metody JS Array JS Array Sort Iterace pole JS JS Array Const JS Termíny Formáty data JS JS metody získávání data JS metody nastavení data JS Math JS Náhodný JS Booleans JS Srovnání Podmínky JS Přepínač JS JS Loop For JS Loop For In JS Loop For Of Zatímco JS Loop JS Break JS Iterables Sady JS Mapy JS Typ JS Konverze typu JS JS Bitwise JS RegExp Chyby JS Rozsah JS JS Zvedací zařízení Přísný režim JS JS toto klíčové slovo Funkce šipky JS JS třídy JS JSON Ladění JS Průvodce stylem JS JS Best Practices Chyby JS Výkon JS JS Reserved Words

Verze JS

Verze JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Historie JS

JS objekty

Definice objektů Vlastnosti objektu Objektové metody Zobrazení objektu Objektové přístupové objekty Konstruktory objektů Prototypy objektů Iterovatelné objekty Sady objektů Mapy objektů Reference objektu

Funkce JS

Definice funkcí Funkční parametry Vyvolání funkce Volání funkce Funkce Použít Funkční uzávěry

JS třídy

Úvod do třídy Třídní dědičnost Třída Statická

JS Async

JS zpětná volání JS asynchronní JS Sliby JS Async/Await

JS HTML DOM

Úvod do DOM Metody DOM Dokument DOM Prvky DOM DOM HTML Formuláře DOM DOM CSS DOM animace Události DOM DOM Event Listener Navigace DOM DOM uzly Kolekce DOM Seznamy uzlů DOM

Kusovník prohlížeče JS

Okno JS Obrazovka JS Umístění JS Historie JS JS Navigator Popup Alert JS Časování JS Soubory cookie JS

Webová rozhraní API JS

Úvod do webového rozhraní API Web Forms API Webová historie API Web Storage API Web Worker API Web Fetch API Web Geolocation API

JS AJAX

Úvod do AJAXu AJAX XMLHttp Požadavek AJAX Odpověď AJAX Soubor XML AJAX AJAX PHP AJAX ASP Databáze AJAX Aplikace AJAX Příklady AJAX

JS JSON

Úvod do JSON Syntaxe JSON JSON vs XML Datové typy JSON Analýza JSON JSON Stringify Objekty JSON Pole JSON Server JSON JSON PHP JSON HTML JSON JSONP

JS vs jQuery

Selektory jQuery HTML jQuery jQuery CSS jQuery DOM

Grafika JS

Grafika JS JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

Příklady JS

Příklady JS JS HTML DOM Vstup HTML JS JS HTML objekty JS HTML události Prohlížeč JS Editor JS Cvičení JS JS kvíz Certifikát JS

JS Reference

Objekty JavaScriptu HTML DOM objekty


Chyby JavaScriptu


Hoď a zkus... Chyť... Konečně

Příkaz trydefinuje blok kódu, který se má spustit (vyzkoušet).

Příkaz catchdefinuje blok kódu pro zpracování jakékoli chyby.

Příkaz finallydefinuje blok kódu, který se má spustit bez ohledu na výsledek.

Příkaz throwdefinuje vlastní chybu.


Chyby se budou dít!

Při provádění kódu JavaScript se mohou vyskytnout různé chyby.

Chyby mohou být chyby v kódování způsobené programátorem, chyby způsobené nesprávným zadáním a další nepředvídatelné věci.

Příklad

V tomto příkladu jsme chybně zadali „alert“ jako „adddlert“, abychom záměrně vytvořili chybu:

<p id="demo"></p>

<script>
try {
  adddlert("Welcome guest!");
}
catch(err) {
  document.getElementById("demo").innerHTML = err.message;
}
</script>

JavaScript zachytí adddlert jako chybu a spustí kód catch, aby to zpracoval.


JavaScript zkuste a chytněte

Příkaz tryvám umožňuje definovat blok kódu, který má být testován na chyby během jeho provádění.

Příkaz catchvám umožňuje definovat blok kódu, který se má provést, pokud v bloku try dojde k chybě.

Příkazy JavaScriptu trya catch jsou ve dvojicích:

try {
  Block of code to try
}
catch(err) {
  Block of code to handle errors
}


JavaScript vyvolává chyby

Když dojde k chybě, JavaScript se normálně zastaví a vygeneruje chybovou zprávu.

Technický termín pro to je: JavaScript vyvolá výjimku (vyvolá chybu) .

JavaScript ve skutečnosti vytvoří objekt Error se dvěma vlastnostmi: name a message .


Prohlášení o hodu

Příkaz throwumožňuje vytvořit vlastní chybu.

Technicky můžete vyvolat výjimku (vyvolat chybu) .

Výjimkou může být JavaScript String, a Number, a Booleannebo Object:

throw "Too big";    // throw a text
throw 500;          // throw a number

Pokud použijete throwspolečně s trya catch, můžete řídit tok programu a generovat vlastní chybové zprávy.


Příklad ověření vstupu

Tento příklad zkoumá vstup. Pokud je hodnota nesprávná, vyvolá se výjimka (err).

Výjimka (err) je zachycena příkazem catch a zobrazí se vlastní chybová zpráva:

<!DOCTYPE html>
<html>
<body>

<p>Please input a number between 5 and 10:</p>

<input id="demo" type="text">
<button type="button" onclick="myFunction()">Test Input</button>
<p id="p01"></p>

<script>
function myFunction() {
  const message = document.getElementById("p01");
  message.innerHTML = "";
  let x = document.getElementById("demo").value;
  try {
    if(x == "") throw "empty";
    if(isNaN(x)) throw "not a number";
    x = Number(x);
    if(x < 5) throw "too low";
    if(x > 10) throw "too high";
  }
  catch(err) {
    message.innerHTML = "Input is " + err;
  }
}
</script>

</body>
</html>

Ověření HTML

Výše uvedený kód je pouze příkladem.

Moderní prohlížeče často používají kombinaci JavaScriptu a vestavěné validace HTML pomocí předem definovaných ověřovacích pravidel definovaných v atributech HTML:

<input id="demo" type="number" min="5" max="10" step="1">

Více o ověřování formulářů si můžete přečíst v pozdější kapitole tohoto kurzu.


Závěrečné prohlášení

Příkaz finallyvám umožňuje spustit kód po pokusu a zachycení, bez ohledu na výsledek:

Syntax

try {
  Block of code to try
}
catch(err) {
  Block of code to handle errors
}
finally {
  Block of code to be executed regardless of the try / catch result
}

Příklad

function myFunction() {
  const message = document.getElementById("p01");
  message.innerHTML = "";
  let x = document.getElementById("demo").value;
  try {
    if(x == "") throw "is empty";
    if(isNaN(x)) throw "is not a number";
    x = Number(x);
    if(x > 10) throw "is too high";
    if(x < 5) throw "is too low";
  }
  catch(err) {
    message.innerHTML = "Error: " + err + ".";
  }
  finally {
    document.getElementById("demo").value = "";
  }
}

Objekt chyby

JavaScript má vestavěný chybový objekt, který poskytuje informace o chybě, když dojde k chybě.

Chybový objekt poskytuje dvě užitečné vlastnosti: název a zprávu.


Chyba Vlastnosti objektu

VlastnictvíPopis
názevNastaví nebo vrátí název chyby
zprávaNastaví nebo vrátí chybovou zprávu (řetězec)

Hodnoty názvu chyby

Vlastnost error name může vrátit šest různých hodnot:

Název chybyPopis
EvalErrorVe funkci eval() došlo k chybě
RangeErrorDošlo k číslu „mimo rozsah“.
ReferenceErrorDošlo k nezákonnému odkazu
Chyba syntaxeDošlo k chybě syntaxe
TypeErrorDošlo k chybě typu
URIErrorV encodeURI() došlo k chybě

Šest různých hodnot je popsáno níže.


Chyba Eval

An EvalErroroznačuje chybu ve funkci eval().

Novější verze JavaScriptu nezpůsobují EvalError. Místo toho použijte SyntaxError.


Chyba rozsahu

A RangeErrorje vyvoláno, pokud použijete číslo, které je mimo rozsah zákonných hodnot.

Například: Nemůžete nastavit počet platných číslic čísla na 500.

Příklad

let num = 1;
try {
  num.toPrecision(500);   // A number cannot have 500 significant digits
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Referenční chyba

A ReferenceErrorje vyvoláno, pokud použijete (odkaz) na proměnnou, která nebyla deklarována:

Příklad

let x = 5;
try {
  x = y + 1;   // y cannot be used (referenced)
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Chyba syntaxe

A SyntaxErrorje vyvoláno, pokud se pokusíte vyhodnotit kód s chybou syntaxe.

Příklad

try {
  eval("alert('Hello)");   // Missing ' will produce an error
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Chyba typu

A TypeErrorje vyvoláno, pokud použijete hodnotu, která je mimo rozsah očekávaných typů:

Příklad

let num = 1;
try {
  num.toUpperCase();   // You cannot convert a number to upper case
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Chyba URI (Uniform Resource Identifier).

A URIErrorje vyvoláno, pokud ve funkci URI použijete nepovolené znaky:

Příklad

try {
  decodeURI("%%%");   // You cannot URI decode percent signs
}
catch(err) {
  document.getElementById("demo").innerHTML = err.name;
}

Vlastnosti nestandardního chybového objektu

Mozilla a Microsoft definují některé nestandardní vlastnosti chybového objektu:

fileName (Mozilla)
lineNumber (Mozilla)
columnNumber (Mozilla)
stack (Mozilla)
popis (Microsoft)
číslo (Microsoft)

Nepoužívejte tyto vlastnosti na veřejných webových stránkách. Nebudou fungovat ve všech prohlížečích.


Kompletní odkaz na chybu

Úplnou referenci o objektu Error naleznete v naší úplné referenci o chybách JavaScriptu .