0Pricing
TypeScript Academy · Lektion

Das Problem mit dem Auslösen von Fehlern

Erfahren Sie, warum Exceptions Fehler vor dem Typsystem verbergen.

Das Problem mit dem Auslösen von Fehlern ist eine kostenlose TypeScript Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des TypeScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.

Ausnahmen sind unsichtbar

Wenn eine Funktion throw verwendet, ist das in ihrer Signatur nicht erkennbar. Das Typsystem kann nicht erkennen, welche Funktionen fehlschlagen können. Daher gibt es für aufrufenden Code keinen Hinweis des Compilers, Fehler zu behandeln.

Eine Funktion, die eine Ausnahme auslöst

Diese Funktion sieht so aus, als würde sie immer eine Zahl zurückgeben, kann aber eine Ausnahme auslösen. Der Rückgabetyp number verbirgt den Fehlerfall vollständig.

function parsePort(s: string): number {
  const n = Number(s);
  if (Number.isNaN(n)) throw new Error("bad port");
  return n;
}
console.log(parsePort("8080")); // 8080

Aufrufender Code vergisst das Abfangen

Nichts zwingt den aufrufenden Code, den Aufruf in try/catch einzuschließen. Der Fehler wird problemlos kompiliert und zeigt sich erst zur Laufzeit als Absturz.

const port = parsePort("oops");
// No compile error; throws at runtime, possibly crashing the app.

try/catch verliert den Typ

Selbst wenn Sie die Ausnahme abfangen, ist der abgefangene Wert als unknown (oder any) typisiert. Die Struktur des Fehlers wird nicht erfasst, sodass die Behandlung einem Rätselraten gleicht.

try {
  parsePort("x");
} catch (e) {
  // e: unknown -> you must narrow it manually
}

Fehler als Werte

Die Alternative besteht darin, dass die Funktion einen Fehler als gewöhnlichen Wert zurückgibt, statt eine Ausnahme auszulösen. Dann zeigt der Rückgabetyp ehrlich beide möglichen Ergebnisse.

Skizze mit Rückgabewert

Geben Sie statt einer Ausnahme ein markiertes Objekt zurück, das Erfolg oder Fehler beschreibt. Der aufrufende Code muss es prüfen, bevor er den Wert verwendet.

type ParseResult =
  | { ok: true; value: number }
  | { ok: false; error: string };

Der Typ sagt jetzt die Wahrheit

Eine Funktion, die ParseResult zurückgibt, weist darauf hin, dass sie fehlschlagen kann. Der Compiler verlangt dann vom aufrufenden Code, den Fehlerzweig zu behandeln.

function parsePort(s: string): ParseResult {
  const n = Number(s);
  return Number.isNaN(n)
    ? { ok: false, error: "bad port" }
    : { ok: true, value: n };
}

Erzwungene Behandlung

Da der Wert zu einem der beiden Zweige gehören kann, dürfen Sie value nicht lesen, ohne zuerst ok zu prüfen. Der Compiler grenzt den Typ erst nach dieser Prüfung ein.

const r = parsePort("oops");
if (r.ok) console.log(r.value);
else console.log("failed:", r.error);

Ausnahmen haben weiterhin ihren Platz

Wirklich unerwartete, nicht behebbare Fehler (Programmierfehler, Speichermangel) können weiterhin eine Ausnahme auslösen. Fehler als Werte eignen sich besonders für erwartete Fehler wie Parsing und Validierung.

Explizit statt implizit

Die Rückgabe von Fehlern macht den Fehlerpfad im Typ explizit, an der Aufrufstelle sichtbar und verhindert, dass er versehentlich ignoriert wird – anders als ein verborgenes throw.

Auf dem Weg zu Result und Option

Diese Struktur aus markiertem Erfolg oder Fehler lässt sich zu einem wiederverwendbaren Typ Result verallgemeinern. Das Fehlen oder Vorhandensein eines Werts lässt sich entsprechend zu Option verallgemeinern. Beide Konzepte werden als Nächstes behandelt.

Kurzer Check

Kurzer Check zu dieser Lektion.

Rückblick

Ausgelöste Fehler sind für Typen unsichtbar: Signaturen verbergen Fehler, und aufrufender Code vergisst das Abfangen. Wird ein Fehler als expliziter Wert zurückgegeben (als markiertes Erfolgs- oder Fehlerobjekt), ist der Fehlerpfad im Typ sichtbar und kann nicht ignoriert werden. Dies führt zu den Typen Result und Option.

Häufig gestellte Fragen

Ist die Lektion „Das Problem mit dem Auslösen von Fehlern“ kostenlos?

Ja — der vollständige Text von „Das Problem mit dem Auslösen von Fehlern“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des TypeScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Das Problem mit dem Auslösen von Fehlern“?

Erfahren Sie, warum Exceptions Fehler vor dem Typsystem verbergen. Du übst TypeScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um TypeScript Academy zu starten?

Keine Vorkenntnisse erforderlich. TypeScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Das Problem mit dem Auslösen von Fehlern“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser TypeScript Academy-Lektion Code schreiben und ausführen?

Ja. Jede TypeScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Das Problem mit dem Auslösen von Fehlern
  2. Result-Typen modellieren
  3. Option- und Maybe-Typen
  4. Railway-Oriented Programming
← Zurück zu TypeScript Academy