studyklar
IProg · Skript 2 · Abschnitt 10

Fehlerbehandlung in JavaScript

Was passiert, wenn in einem Skript etwas schiefgeht? Ohne Vorkehrung bricht es ab. Hier steht, wie man einen Fehler mit try und catch auffängt und wie man selbst einen meldet. Rechts steht je Schritt ein kleines Programm mit seiner Ausgabe. Mit Weiter geht es Schritt für Schritt voran. Ein Klick auf einen Schritt springt direkt dorthin.

Worum es geht

Skript 02, Folie 40: JavaScript-Fehlerbehandlung. Eine Stelle der Folie ist falsch geschrieben (window.onError); Schritt 8 stellt sie richtig.

Ein Skript im Browser kann auf viele Arten scheitern: eine Variable gibt es nicht, ein Wert ist null, eine Eingabe ist unsinnig. Die Frage ist, wie das Programm danach weiterläuft.

So gehen wir vor:

  1. Sehen, was ein Fehler ohne Behandlung anrichtet.
  2. Ihn mit try und catch abfangen, das Fehlerobjekt lesen, finally kennenlernen.
  3. Selbst Fehler werfen, die Fehlertypen und einen eigenen Typ.
  4. Fehler über das Ereignis window.onerror auffangen.
  5. Eine Klausurfrage selbst lösen.

Ein Fehler bricht das Skript ab

console.log("Start");let summe = zahl + 1;console.log("Ende");
Start
Uncaught ReferenceError: zahl is not defined

Zeile 2 benutzt die Variable zahl, die es nirgends gibt. Beim Ausführen entsteht ein Fehler (englisch „error“, in Java „Exception“). Der Interpreter (das Programm im Browser, das JavaScript Zeile für Zeile ausführt) bricht das Skript an dieser Stelle ab.

„Start“ wird noch ausgegeben, „Ende“ nie. Stattdessen meldet die Konsole des Browsers den Fehler. Die Konsole ist ein Fenster der Entwicklerwerkzeuge (Taste F12); dort landen auch die Ausgaben von console.log. Der Besucher der Seite sieht davon nichts; er merkt nur, dass etwas nicht funktioniert.

try und catch

Skript · JavaScript Fehlerbehandlung (Folie 40)
  • funktioniert analog zu Java
  • try {...} catch(err) {...} finally {...}
  • selbst werfen, z. B. durch throw new Error(msg);
console.log("Start");try {  let summe = zahl + 1;  console.log("Summe: " + summe);} catch (err) {  console.log("Fehler abgefangen");}console.log("Ende");
Start
Fehler abgefangen
Ende

Code, der scheitern kann, kommt in einen try-Block („versuche“). Tritt darin ein Fehler auf, springt das Programm sofort in den catch-Block („fange“). Der Rest des try-Blocks wird übersprungen: „Summe:“ erscheint nicht.

Danach läuft das Programm normal weiter, „Ende“ kommt. In den Klammern hinter catch steht nur ein Name für den Fehler, hier err. Zum Vergleich: In Java steht dort zusätzlich ein Typ, etwa Exception e.

Merke: Ein Fehler im try-Block springt sofort in den catch-Block. Nach dem catch-Block läuft das Programm normal weiter.
Noch 9 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1

(noch kein Programm)
LegendeHier steht gleich je Schritt ein kleines Programm mit seiner Ausgabe.