Aufgaben-Python/courses/javascript/08_fehlerbehandlung_und_debugging
2026-08-30 10:42:17 +02:00
..
aufgabe.js Vollständiger Ausbau des JavaScript & TypeScript Curriculums auf 16 Module (4 Lehrpfade: ES6 Essentials, Moderne Datenmodelle & OOP, DOM & Web APIs, Architecture & TypeScript) 2026-08-30 10:42:17 +02:00
index.html Vollständiger Ausbau des JavaScript & TypeScript Curriculums auf 16 Module (4 Lehrpfade: ES6 Essentials, Moderne Datenmodelle & OOP, DOM & Web APIs, Architecture & TypeScript) 2026-08-30 10:42:17 +02:00
musterloesung.js Vollständiger Ausbau des JavaScript & TypeScript Curriculums auf 16 Module (4 Lehrpfade: ES6 Essentials, Moderne Datenmodelle & OOP, DOM & Web APIs, Architecture & TypeScript) 2026-08-30 10:42:17 +02:00
README.md Vollständiger Ausbau des JavaScript & TypeScript Curriculums auf 16 Module (4 Lehrpfade: ES6 Essentials, Moderne Datenmodelle & OOP, DOM & Web APIs, Architecture & TypeScript) 2026-08-30 10:42:17 +02:00
test_aufgabe.js Vollständiger Ausbau des JavaScript & TypeScript Curriculums auf 16 Module (4 Lehrpfade: ES6 Essentials, Moderne Datenmodelle & OOP, DOM & Web APIs, Architecture & TypeScript) 2026-08-30 10:42:17 +02:00

🌐 JS 08: Fehlerbehandlung & Debugging

Willkommen zu Modul 08 des JavaScript-Kurses! In diesem Modul lernst du defensive Programmiertechniken, strukturierte Ausnahmebehandlung mit try...catch...finally und den Aufbau professioneller Fehlerklassen-Hierarchien.


🎯 Lernziele

Nach diesem Modul kannst du:

  1. Das try...catch...finally Kontrollmuster verstehen und für fehlertolerante Anwendungen einsetzen.
  2. Gezielte Fehler mit throw new Error(...) auslösen.
  3. Eigene Fehlerklassen von Error ableiten (class ValidierungsFehler extends Error).
  4. Fehlerklassen hierarchisch strukturieren und mit Zusatzattributen (wie betroffenes Formularfeld oder Saldo) ausstatten.
  5. Im catch-Block unterschiedliche Fehlerursachen mittels instanceof unterscheiden und behandeln.

💡 Theoretische Grundlagen

1. Das try...catch...finally Muster

try {
  // Kritischer Code:
  const daten = JSON.parse(roheEingabe);
  verarbeite(daten);
} catch (error) {
  // Behandlung:
  console.error("Fehler abgefangen:", error.message);
} finally {
  // Läuft garantiert IMMER:
  cleanup();
}

2. Eigene Fehlerklassen definieren

Standard-Fehler (new Error(...)) enthalten oft nicht genügend Kontext für granulare UI-Reaktionen. Durch das Ableiten eigener Klassen schaffen wir Klarheit:

// Basis für alle Fehler dieser Domäne:
class AnwendungsFehler extends Error {
  constructor(message) {
    super(message);
    this.name = "AnwendungsFehler";
  }
}

// Spezifischer Validierungsfehler mit Feldbezug:
class ValidierungsFehler extends AnwendungsFehler {
  constructor(message, feld = null) {
    super(message);
    this.name = "ValidierungsFehler";
    this.feld = feld;
  }
}

3. Fehler differenzieren mit instanceof

try {
  fuehreOperationAus();
} catch (err) {
  if (err instanceof ValidierungsFehler) {
    console.warn(`Ungültige Eingabe im Feld ${err.feld}: ${err.message}`);
  } else if (err instanceof GuthabenFehler) {
    console.warn(`Guthaben (${err.saldo} €) reicht nicht für ${err.betrag} € aus.`);
  } else {
    // Unbekannter Fehler -> Neu werfen
    throw err;
  }
}

🪂 Didaktische Analogie: Die Notbremse & der Auffang-Fallschirm

  • throw: Das Ziehen der Notbremse im Zug – der normale Ablauf wird sofort unterbrochen.
  • catch: Der Fallschirm, der die Passagiere vor dem Absturz bewahrt und einen sicheren Ausstieg ermöglicht.
  • finally: Der Flughafen-Boden, der am Ende des Flugs immer erreicht wird, egal wie turbulent die Reise war.

🎯 Aufgabenübersicht in aufgabe.js

  1. TODO 1: Error-Klassenhierarchie:
    • AnwendungsFehler extends Error
    • ValidierungsFehler extends AnwendungsFehler (mit feld)
    • GuthabenFehler extends AnwendungsFehler (mit saldo, betrag)
  2. TODO 2: sichereDivision(a, b):
    • Prüft Zahlen und fängt Division durch 0 mit AnwendungsFehler ab.
  3. TODO 3: parseBenutzerJson(jsonString):
    • Fängt JSON-Syntaxfehler ab und validiert das Feld name.
  4. TODO 4: pruefeTransaktion(kontoSaldo, abhebeBetrag):
    • Prüft positive Beträge und ausreichendes Guthaben mit GuthabenFehler.

🧪 Tests ausführen

Führe die Testsuite in der Web-IDE oder lokal aus:

# In der Web-IDE: Klicke auf 'Code ausführen & testen'