capypad
0 Tage Serie
javascript / expert
Snippet

Die Result-Monade zur Fehlerfortpflanzung

Das Result-Muster ersetzt das Auslösen von Exceptions durch ein Rückgabeobjekt, das entweder Erfolg oder Misserfolg darstellt. Dieser funktionale Ansatz macht die Fehlerbehandlung im Typsystem explizit, zwingt Entwickler, potenzielle Fehler zu berücksichtigen, und macht den Kontrollfluss leichter nachvollziehbar.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const Success = (value) => ({ ok: true, value });
const Failure = (error) => ({ ok: false, error });
 
const safeJSON = (str) => {
try { return Success(JSON.parse(str)); }
catch (e) { return Failure(e.message); }
};
 
const res = safeJSON('{"key": "val"}');
if (res.ok) {
console.log(res.value.key);
} else {
console.error(res.error);
}
Erklärung
1
return Success(JSON.parse(str))
Hüllt ein erfolgreiches Rechenergebnis in ein standardisiertes Container-Objekt ein.
2
if (res.ok) { ... }
Erzwingt eine explizite Prüfung des Ergebnisses, bevor auf die Daten zugegriffen wird.