javascript / expert
Snippet
Abfangen unbehandelter Fehler in benutzerdefinierten Svelte-Store-Abonnements
Benutzerdefinierte Stores in Svelte folgen dem Store-Vertrag, indem sie eine subscribe-Funktion zurückgeben. Wenn Abonnenten während der Benachrichtigung synchrone Fehler auslösen, führt dies bei Standardimplementierungen zum Absturz des Ausführungsstacks. Das Einbetten des Aufrufs in einen try/catch-Block mit einem dedizierten Fehler-Handler stellt die Belastbarkeit des Stores sicher.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
export function createSafeStore(initialValue) {const subscribers = new Set();return {subscribe(subscriber, onError) {subscribers.add(subscriber);try {subscriber(initialValue);} catch (err) {if (onError) onError(err);else throw err;}return () => subscribers.delete(subscriber);}};}
svelte
Erklärung
1
export function createSafeStore(initialValue) {
Deklariert eine Factory-Funktion zur Instanziierung eines fehlertoleranten Stores.
2
const subscribers = new Set();
Initialisiert ein Set zur Nachverfolgung eindeutiger Subscriber-Funktionen.
3
subscribe(subscriber, onError) {
Implementiert den Store-Vertrag mit einem optionalen Fehler-Callback-Parameter.
4
try { subscriber(initialValue); } catch (err) {
Führt den Subscriber-Callback mit dem Initialwert aus und fängt Ausnahmen ab.
5
if (onError) onError(err); else throw err;
Leitet abgefangene Fehler an den Handler weiter oder wirft sie erneut, falls unbehandelt.
6
return () => subscribers.delete(subscriber);
Gibt eine Unsubscribe-Closure zurück, um den Subscriber aus dem Set zu entfernen.