JS Tutoriaal

JS TUIS JS Inleiding JS Waarheen JS Uitset JS Verklarings JS sintaksis JS Kommentaar JS veranderlikes JS Laat JS Konst JS-operateurs JS Rekenkunde JS Opdrag JS datatipes JS Funksies JS Voorwerpe JS Events JS Strings JS String Metodes JS String Soek JS String Templates JS nommers JS-nommermetodes JS Skikkings JS Skikking Metodes JS Array Sorteer JS Skikking Iterasie JS Array Konst JS Datums JS Datum Formate JS Datum Kry Metodes JS Datum Stel Metodes JS Wiskunde JS Random JS Booleans JS Vergelykings JS Voorwaardes JS Skakelaar JS Loop Vir JS Loop For In JS Loop Vir Van JS Loop Terwyl JS Break JS Iterables JS-stelle JS Kaarte JS tipe JS Tipe Omskakeling JS Bitwise JS RegExp JS foute JS Bestek JS Hysing JS Streng modus JS hierdie sleutelwoord JS Arrow Funksie JS Klasse JS JSON JS Ontfouting JS Stylgids JS Beste Praktyke JS foute JS prestasie JS Voorbehou Woorde

JS weergawes

JS weergawes JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge JS Geskiedenis

JS Voorwerpe

Voorwerpdefinisies Voorwerp Eienskappe Voorwerp Metodes Voorwerp vertoon Voorwerptoebehore Voorwerpkonstrukteurs Voorwerpprototipes Object Iterables Voorwerpstelle Voorwerpkaarte Voorwerpverwysing

JS Funksies

Funksie definisies Funksie parameters Funksie Aanroep Funksie oproep Funksie Pas toe Funksie sluitings

JS Klasse

Klasintro Klas Erfenis Klas Staties

JS Async

JS Terugbelle JS Asynchroon JS Beloftes JS Async/Wag

JS HTML DOM

DOM Inleiding DOM Metodes DOM-dokument DOM Elemente DOM HTML DOM-vorms DOM CSS DOM-animasies DOM-geleenthede DOM Gebeurtenis Luisteraar DOM-navigasie DOM nodusse DOM Versamelings DOM Node lyste

JS Browser BOM

JS venster JS skerm JS ligging JS Geskiedenis JS Navigator JS Popup Alert JS Tydsberekening JS koekies

JS Web API's

Web API Inleiding Webvorms API Webgeskiedenis API Webberging API Webwerker API Web haal API Web Geolocation API

JS AJAX

AJAX Intro AJAX XMLHttp AJAX-versoek AJAX-reaksie AJAX XML-lêer AJAX PHP AJAX ASP AJAX-databasis AJAX toepassings AJAX voorbeelde

JS JSON

JSON Inleiding JSON-sintaksis JSON vs XML JSON-datatipes JSON Ontleed JSON Stringify JSON-voorwerpe JSON-skikkings JSON-bediener JSON PHP JSON HTML JSON JSONP

JS vs jQuery

jQuery keurders jQuery HTML jQuery CSS jQuery DOM

JS grafika

JS grafika JS Canvas JS Plot JS Chart.js JS Google Chart JS D3.js

JS Voorbeelde

JS Voorbeelde JS HTML DOM JS HTML-invoer JS HTML-voorwerpe JS HTML-geleenthede JS Blaaier JS Redakteur JS Oefeninge JS Vasvra JS Sertifikaat

JS Verwysings

JavaScript-voorwerpe HTML DOM-voorwerpe


JavaScript-foute


Gooi, en probeer...Vang...Uiteindelik

Die trystelling definieer 'n kodeblok om uit te voer (om te probeer).

Die catchstelling definieer 'n kodeblok om enige fout te hanteer.

Die finallystelling definieer 'n kodeblok om te hardloop, ongeag die resultaat.

Die throwstelling definieer 'n pasgemaakte fout.


Foute sal gebeur!

Wanneer JavaScript-kode uitgevoer word, kan verskillende foute voorkom.

Foute kan koderingsfoute wees wat deur die programmeerder gemaak word, foute as gevolg van verkeerde invoer, en ander onvoorsienbare dinge.

Voorbeeld

In hierdie voorbeeld het ons "alert" verkeerd gespel as "adddler" om doelbewus 'n fout te produseer:

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

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

JavaScript vang addlert op as 'n fout, en voer die vangkode uit om dit te hanteer.


JavaScript probeer en vang

Die trystelling laat jou toe om 'n blok kode te definieer wat vir foute getoets moet word terwyl dit uitgevoer word.

Die catchstelling laat jou toe om 'n blok kode te definieer wat uitgevoer moet word, as 'n fout in die probeerblok voorkom.

Die JavaScript-stellings tryen catch kom in pare:

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


JavaScript gooi foute

Wanneer 'n fout voorkom, sal JavaScript normaalweg stop en 'n foutboodskap genereer.

Die tegniese term hiervoor is: JavaScript sal 'n uitsondering gooi (gooi 'n fout) .

JavaScript sal eintlik 'n Fout-objek met twee eienskappe skep: naam en boodskap .


Die gooi Verklaring

Die throwstelling laat jou toe om 'n persoonlike fout te skep.

Tegnies kan jy 'n uitsondering gooi (gooi 'n fout) .

Die uitsondering kan 'n JavaScript String, 'n Number, 'n Booleanof 'n Object:

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

As jy throwsaam met tryen gebruik catch, kan jy programvloei beheer en persoonlike foutboodskappe genereer.


Invoer validering voorbeeld

Hierdie voorbeeld ondersoek insette. As die waarde verkeerd is, word 'n uitsondering (fout) gegooi.

Die uitsondering (fout) word opgevang deur die catch-stelling en 'n pasgemaakte foutboodskap word vertoon:

<!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>

HTML-bekragtiging

Die kode hierbo is net 'n voorbeeld.

Moderne blaaiers sal dikwels 'n kombinasie van JavaScript en ingeboude HTML-bekragtiging gebruik, deur voorafbepaalde valideringsreëls te gebruik wat in HTML-kenmerke gedefinieer is:

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

Jy kan meer lees oor vormvalidering in 'n latere hoofstuk van hierdie tutoriaal.


Die uiteindelike Verklaring

Die finallystelling laat jou kode uitvoer, na probeer en vang, ongeag die resultaat:

Sintaksis

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
}

Voorbeeld

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 = "";
  }
}

Die foutvoorwerp

JavaScript het 'n ingeboude foutobjek wat foutinligting verskaf wanneer 'n fout voorkom.

Die foutvoorwerp bied twee nuttige eienskappe: naam en boodskap.


Fout Object Eienskappe

EiendomBeskrywing
naamStel of gee 'n foutnaam terug
boodskapStel of gee 'n foutboodskap ('n string) terug

Foutnaamwaardes

Ses verskillende waardes kan deur die foutnaam-eienskap teruggestuur word:

FoutnaamBeskrywing
EvalError'n Fout het in die eval()-funksie voorgekom
RangeError'n Getal "buite omvang" het voorgekom
Verwysingsfout'n Onwettige verwysing het plaasgevind
Sintaksfout'n Sintaksfout het voorgekom
TypeError'n Tipefout het voorgekom
URIfout'n Fout in encodeURI() het voorgekom

Die ses verskillende waardes word hieronder beskryf.


Eval fout

An EvalErrordui 'n fout in die eval() funksie aan.

Nuwer weergawes van JavaScript gooi nie EvalError nie. Gebruik eerder SyntaxError.


Reeksfout

A RangeErrorword gegooi as jy 'n getal gebruik wat buite die omvang van wetlike waardes is.

Byvoorbeeld: Jy kan nie die aantal beduidende syfers van 'n getal op 500 stel nie.

Voorbeeld

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

Verwysingsfout

A ReferenceErrorword gegooi as jy (verwysing) 'n veranderlike gebruik wat nie verklaar is nie:

Voorbeeld

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

Sintaksfout

A SyntaxErrorword gegooi as jy probeer om kode met 'n sintaksfout te evalueer.

Voorbeeld

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

Tik Fout

A TypeErrorword gegooi as jy 'n waarde gebruik wat buite die reeks verwagte tipes is:

Voorbeeld

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

URI (Uniform Resource Identifier)-fout

A URIErrorword gegooi as jy onwettige karakters in 'n URI-funksie gebruik:

Voorbeeld

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

Nie-standaard foutvoorwerpeienskappe

Mozilla en Microsoft definieer 'n paar nie-standaard fout voorwerp eienskappe:

lêernaam (Mozilla)
lynnommer (Mozilla)
kolomnommer (Mozilla)
stapel (Mozilla)
beskrywing (Microsoft)
nommer (Microsoft)

Moenie hierdie eiendomme op openbare webwerwe gebruik nie. Hulle sal nie in alle blaaiers werk nie.


Voltooi foutverwysing

Vir 'n volledige verwysing van die Fout-voorwerp, gaan na ons Volledige JavaScript-foutverwysing .