Appearance
Kapitel 19: Fehlerbehandlung (Code-Absturz vermeiden)
Fehlerbehandlung ist wichtig, um Abstürze zu vermeiden. In diesem Kapitel lernen Sie try...catch und Debugging.
19.1 Häufige Fehlertypen
JavaScript hat verschiedene Arten von Fehlern.
1. SyntaxError (Syntaxfehler)
javascript
// FEHLER: Fehlendes Anführungszeichen
console.log("Hallo);
// FEHLER: Fehlender Schluss-Klammer
if (true {
console.log("Hallo");
}Lösung: Code auf Syntaxfehler prüfen (IDE hilft).
2. ReferenceError (Nicht definierte Variable)
javascript
// FEHLER: Variable nicht definiert
console.log(x); // x ist nicht definiert
// RICHTIG
let x = 10;
console.log(x);3. TypeError (Falscher Datentyp)
javascript
// FEHLER: Methode auf `null` aufrufen
let elem = null;
elem.textContent = "Hallo"; // Cannot read properties of null
// RICHTIG
let elem = document.getElementById("vorhanden");
if (elem) {
elem.textContent = "Hallo";
}4. RangeError (Ungültiger Wertebereich)
javascript
// FEHLER: Rekursion ohne Abbruchbedingung
function rekursion() {
rekursion();
}
rekursion(); // Maximum call stack size exceeded19.2 try...catch - Fehler abfangen
try...catch erlaubt Ihnen, Fehler abzufangen, ohne dass das Programm abstürzt.
Grundlegende Syntax
javascript
try {
// Code, der einen Fehler verursachen könnte
let ergebnis = 10 / 0;
if (!isFinite(ergebnis)) {
throw new Error("Ungültige Berechnung!");
}
} catch (fehler) {
// Wird ausgeführt, wenn ein Fehler auftritt
console.error("Fehler aufgetreten:", fehler.message);
} finally {
// Wird IMMER ausgeführt (egal ob Fehler oder nicht)
console.log("Berechnung beendet.");
}Einfaches Beispiel
javascript
try {
let x = y + 10; // y ist nicht definiert → Fehler
} catch (fehler) {
console.log("Ein Fehler ist aufgetreten:", fehler.message);
}
// Ausgabe: "Ein Fehler ist aufgetreten: y is not defined"finally - Immer ausführen
javascript
try {
console.log("Versuche zu rechnen...");
let ergebnis = 10 / 2;
console.log("Ergebnis:", ergebnis);
} catch (fehler) {
console.error("Fehler:", fehler);
} finally {
console.log("Berechnung abgeschlossen."); // Immer ausgeführt
}19.3 Debugging-Tipps: Konsolen-Breakpoints
1. console.log() - Einfachste Methode
javascript
let x = 10;
let y = 20;
console.log("x:", x, "y:", y); // Werte prüfen
let summe = x + y;
console.log("Summe:", summe);2. debugger - Breakpoint in Code setzen
javascript
let x = 10;
debugger; // Code hält hier an (wie ein Breakpoint)
let y = 20;
let ergebnis = x + y;Verwendung:
debugger;in Code schreiben- Browser-Konsole öffnen (F12)
- Seite neu laden → Code hält an
debugger;an
3. Breakpoints in Browser-Entwicklertools setzen
Schritte:
- F12 drücken → "Quellen" (Sources) Tab
- JS-Datei öffnen
- Auf Zeilennummer klicken → Breakpoint setzen
- Seite neu laden → Code hält an
4. Variablen in "Überwachen" (Watch) hinzufügen
In den Browser-Entwicklertools:
- Breakpoint setzen
- Rechts auf "Überwachen" (Watch) klicken
- Variablennamen eingeben (z.B.
x,summe) - Werte werden in Echtzeit angezeigt
19.4 Praxis: Fehlerbehandlung in Formularvalidierung
Projekt 1: Sichere Division
javascript
function sichereDivision(a, b) {
try {
if (typeof a !== "number" || typeof b !== "number") {
throw new Error("Beide Parameter müssen Zahlen sein!");
}
if (b === 0) {
throw new Error("Division durch Null ist nicht erlaubt!");
}
return a / b;
} catch (fehler) {
console.error("Fehler bei Division:", fehler.message);
return null; // Fehlerwert zurückgeben
}
}
console.log(sichereDivision(10, 2)); // 5
console.log(sichereDivision(10, 0)); // null (Fehler geloggt)
console.log(sichereDivision(10, "x")); // null (Fehler geloggt)Projekt 2: JSON-Parsing mit Fehlerbehandlung
javascript
function sicheresJsonParsing(jsonString) {
try {
let daten = JSON.parse(jsonString);
return daten;
} catch (fehler) {
console.error("JSON-Parsing fehlgeschlagen:", fehler.message);
return null;
}
}
let gueltigesJson = '{"name": "Max", "alter": 25}';
let ungueltigesJson = '{"name": "Max", "alter": 25'; // Fehlendes }
console.log(sicheresJsonParsing(gueltigesJson)); // { name: "Max", alter: 25 }
console.log(sicheresJsonParsing(ungueltigesJson)); // null (Fehler geloggt)Projekt 3: Formularvalidierung mit try...catch
html
<form id="meinForm">
<input type="text" id="name" placeholder="Name">
<input type="email" id="email" placeholder="E-Mail">
<input type="number" id="alter" placeholder="Alter">
<button type="submit">Absenden</button>
</form>
<p id="fehlerMeldung" style="color: red;"></p>
<script>
let form = document.getElementById("meinForm");
let fehlerMeldung = document.getElementById("fehlerMeldung");
form.addEventListener("submit", function(event) {
event.preventDefault();
fehlerMeldung.textContent = "";
try {
let name = document.getElementById("name").value;
let email = document.getElementById("email").value;
let alter = document.getElementById("alter").value;
// Validierung
if (name.trim() === "") {
throw new Error("Name darf nicht leer sein!");
}
if (!email.includes("@")) {
throw new Error("Ungültige E-Mail-Adresse!");
}
if (isNaN(alter) || alter < 0) {
throw new Error("Ungültiges Alter!");
}
// Wenn alles okay ist
alert("Formular erfolgreich abgesendet!");
form.reset();
} catch (fehler) {
fehlerMeldung.textContent = fehler.message;
}
});
</script>📝 Zusammenfassung
In diesem Kapitel haben Sie gelernt:
- ✅ Häufige Fehlertypen: SyntaxError, ReferenceError, TypeError
- ✅
try...catch...finally- Fehler abfangen - ✅
throw- Eigene Fehler werfen - ✅ Debugging:
console.log(),debugger, Breakpoints - ✅ Praxis-Projekte: Sichere Division, JSON-Parsing, Formularvalidierung
➡️ Nächster Schritt
Im nächsten Kapitel lernen wir Basis-Projekte - kleine Projekte zur Festigung des Wissens!
Übung:
- Schreiben Sie eine Funktion, die einen String in eine Zahl umwandelt (mit Fehlerbehandlung)
- Verwenden Sie
try...catch, um JSON-Parsing-Fehler abzufangen - Setzen Sie einen
debugger;in Ihrem Code und verwenden Sie die Browser-Entwicklertools zum Debuggen - Testen Sie alles im Browser
