JS-Tutorial

JS-HAUS JS-Einführung JS Wohin JS-Ausgabe JS-Anweisungen JS-Syntax JS-Kommentare JS-Variablen JS Let JS Konst JS-Operatoren JS-Arithmetik JS-Aufgabe JS-Datentypen JS-Funktionen JS-Objekte JS-Ereignisse JS-Strings JS-String-Methoden Suche nach JS-Strings JS-String-Vorlagen JS-Nummern JS-Zahlenmethoden JS-Arrays JS-Array-Methoden JS-Array-Sortierung JS-Array-Iteration JS-Array-Konstante JS-Daten JS-Datumsformate JS Date Get-Methoden JS-Datumssatzmethoden JS Math JS Zufällig JS Boolesche Werte JS-Vergleiche JS-Bedingungen JS-Schalter JS-Schleife für JS-Schleife für In JS-Schleife für Of JS-Schleife While JS Pause JS-Iterables JS-Sets JS-Karten JS Typeof JS-Typkonvertierung JS Bitweise JS RegExp JS-Fehler JS-Bereich JS Heben Strenger JS-Modus JS dieses Schlüsselwort JS-Pfeilfunktion JS-Klassen JS JSON JS-Debugging JS-Styleguide JS Best Practices JS-Fehler JS-Leistung JS Reservierte Wörter

JS-Versionen

JS-Versionen JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge JS-Geschichte

JS-Objekte

Objektdefinitionen Objekteigenschaften Objektmethoden Objektanzeige Objektzugriffsmethoden Objektkonstruktoren Objekt-Prototypen Objekt-Iterables Objektsätze Objektkarten Objektreferenz

JS-Funktionen

Funktionsdefinitionen Funktionsparameter Funktionsaufruf Funktionsaufruf Funktion anwenden Funktionsschließungen

JS-Klassen

Klasse Einführung Klassenvererbung Klasse statisch

JS asynchron

JS-Rückrufe JS asynchron JS verspricht JS Async/Warten

JS-HTML-DOM

DOM-Einführung DOM-Methoden DOM-Dokument DOM-Elemente DOM-HTML DOM-Formulare DOM-CSS DOM-Animationen DOM-Ereignisse DOM-Ereignis-Listener DOM-Navigation DOM-Knoten DOM-Sammlungen DOM-Knotenlisten

Stückliste des JS-Browsers

JS-Fenster JS-Bildschirm JS-Standort JS-Geschichte JS-Navigator JS-Popup-Warnung JS-Timing JS-Cookies

JS-Web-APIs

Web-API-Einführung Web Forms-API Webprotokoll-API Webspeicher-API Web Worker-API Web-Fetch-API Web-Geolocation-API

JS AJAX

AJAX-Einführung AJAX-XMLHttp AJAX-Anfrage AJAX-Antwort AJAX-XML-Datei AJAX-PHP AJAX ASP AJAX-Datenbank AJAX-Anwendungen AJAX-Beispiele

JS JSON

JSON-Einführung JSON-Syntax JSON vs. XML JSON-Datentypen JSON-Parsing JSON-Stringify JSON-Objekte JSON-Arrays JSON-Server JSON-PHP JSON-HTML JSON JSONP

JS vs. jQuery

jQuery-Selektoren jQuery-HTML jQuery-CSS jQuery-DOM

JS-Grafik

JS-Grafik JS-Leinwand JS Plotly JS Chart.js JS Google-Diagramm JS D3.js

JS-Beispiele

JS-Beispiele JS-HTML-DOM JS-HTML-Eingabe JS-HTML-Objekte JS-HTML-Ereignisse JS-Browser JS-Editor JS-Übungen JS-Quiz JS-Zertifikat

JS-Referenzen

JavaScript-Objekte HTML-DOM-Objekte


JavaScript-Fehler


Werfen und versuchen ... fangen ... endlich

Die tryAnweisung definiert einen Codeblock zum Ausführen (zum Ausprobieren).

Die catchAnweisung definiert einen Codeblock zur Behandlung von Fehlern.

Die finallyAnweisung definiert einen Codeblock, der unabhängig vom Ergebnis ausgeführt wird.

Die throwAnweisung definiert einen benutzerdefinierten Fehler.


Fehler passieren!

Beim Ausführen von JavaScript-Code können verschiedene Fehler auftreten.

Fehler können Codierungsfehler des Programmierers, Fehler aufgrund falscher Eingaben und andere unvorhersehbare Dinge sein.

Beispiel

In diesem Beispiel haben wir "alert" falsch als "addlert" geschrieben, um absichtlich einen Fehler zu erzeugen:

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

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

JavaScript fängt addlert als Fehler ab und führt den Fangcode aus, um ihn zu behandeln.


JavaScript try and catch

Mit der tryAnweisung können Sie einen Codeblock definieren, der während der Ausführung auf Fehler getestet werden soll.

Mit der catchAnweisung können Sie einen Codeblock definieren, der ausgeführt wird, wenn im try-Block ein Fehler auftritt.

Die JavaScript-Anweisungen tryund catch kommen paarweise vor:

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


JavaScript wirft Fehler

Wenn ein Fehler auftritt, stoppt JavaScript normalerweise und generiert eine Fehlermeldung.

Der Fachausdruck dafür lautet: JavaScript will throw an exception (throw an error) .

JavaScript erstellt tatsächlich ein Error-Objekt mit zwei Eigenschaften: name und message .


Die throw-Anweisung

Mit der throwAnweisung können Sie einen benutzerdefinierten Fehler erstellen.

Technisch gesehen können Sie eine Ausnahme auslösen (einen Fehler auslösen) .

Die Ausnahme kann ein JavaScript String, ein Number, ein Booleanoder ein sein Object:

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

Wenn Sie throwzusammen mit tryund verwenden catch, können Sie den Programmablauf steuern und benutzerdefinierte Fehlermeldungen generieren.


Beispiel für die Eingabevalidierung

In diesem Beispiel wird die Eingabe untersucht. Wenn der Wert falsch ist, wird eine Ausnahme (err) geworfen.

Die Ausnahme (err) wird von der catch-Anweisung abgefangen und eine benutzerdefinierte Fehlermeldung wird angezeigt:

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

Der obige Code ist nur ein Beispiel.

Moderne Browser verwenden häufig eine Kombination aus JavaScript und integrierter HTML-Validierung, wobei vordefinierte Validierungsregeln verwendet werden, die in HTML-Attributen definiert sind:

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

Weitere Informationen zur Formularvalidierung finden Sie in einem späteren Kapitel dieses Tutorials.


Die abschließende Aussage

Mit der finallyAnweisung können Sie nach Try und Catch Code ausführen, unabhängig vom Ergebnis:

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
}

Beispiel

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

Das Fehlerobjekt

JavaScript hat ein eingebautes Fehlerobjekt, das Fehlerinformationen bereitstellt, wenn ein Fehler auftritt.

Das Fehlerobjekt stellt zwei nützliche Eigenschaften bereit: Name und Nachricht.


Fehlerobjekteigenschaften

EigentumBeschreibung
NameLegt einen Fehlernamen fest oder gibt ihn zurück
BotschaftSetzt oder gibt eine Fehlermeldung zurück (ein String)

Fehlernamenswerte

Sechs verschiedene Werte können von der Eigenschaft error name zurückgegeben werden:

FehlernameBeschreibung
BewertungsfehlerIn der Funktion eval() ist ein Fehler aufgetreten
RangeErrorEine Zahl "außerhalb des Bereichs" ist aufgetreten
ReferenzfehlerEs ist eine illegale Referenz aufgetreten
Syntax-FehlerEs ist ein Syntaxfehler aufgetreten
TypeErrorEin Typfehler ist aufgetreten
URIFehlerIn encodeURI() ist ein Fehler aufgetreten

Die sechs verschiedenen Werte werden unten beschrieben.


Bewertungsfehler

Ein EvalErrorzeigt einen Fehler in der Funktion eval() an.

Neuere Versionen von JavaScript lösen EvalError nicht aus. Verwenden Sie stattdessen SyntaxError.


Bereichsfehler

A RangeErrorwird ausgelöst, wenn Sie eine Zahl verwenden, die außerhalb des zulässigen Wertebereichs liegt.

Beispiel: Sie können die Anzahl signifikanter Stellen einer Zahl nicht auf 500 setzen.

Beispiel

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

Referenzfehler

A ReferenceErrorwird geworfen, wenn Sie eine nicht deklarierte Variable verwenden (referenzieren):

Beispiel

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

Syntax-Fehler

A SyntaxErrorwird ausgelöst, wenn Sie versuchen, Code mit einem Syntaxfehler auszuwerten.

Beispiel

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

Geben Sie Fehler ein

A TypeErrorwird ausgelöst, wenn Sie einen Wert verwenden, der außerhalb des Bereichs der erwarteten Typen liegt:

Beispiel

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

URI-Fehler (Uniform Resource Identifier).

A URIErrorwird ausgegeben, wenn Sie unzulässige Zeichen in einer URI-Funktion verwenden:

Beispiel

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

Nicht standardmäßige Fehlerobjekteigenschaften

Mozilla und Microsoft definieren einige nicht standardmäßige Eigenschaften von Fehlerobjekten:

fileName (Mozilla)
lineNumber (Mozilla)
columnNumber (Mozilla)
stack (Mozilla)
description (Microsoft)
number (Microsoft)

Verwenden Sie diese Eigenschaften nicht auf öffentlichen Websites. Sie funktionieren nicht in allen Browsern.


Vollständige Fehlerreferenz

Eine vollständige Referenz des Error-Objekts finden Sie in unserer vollständigen JavaScript-Fehlerreferenz .