javascript / expert
Snippet
Erzwingen kontextueller Fehlerfortpflanzung über Aggregate-Wrapper in Store-Abonnements
Wenn reaktive Svelte-Abonnements in Benutzer-Callbacks auf nicht behandelte Ausnahmen stoßen, kann dies zu stiller Zustandsbeschädigung führen. Die Nutzung der nativen JavaScript-Klasse AggregateError bewahrt den ursprünglichen Stacktrace als cause und reichert die Fehlerdiagnose mit Kontextzuständen an.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
export function safeSubscribe(store, handler) {return store.subscribe((value) => {try {handler(value);} catch (cause) {const err = new AggregateError([cause],`Store subscriber failed for value: ${JSON.stringify(value)}`,{ cause });console.error(err);throw err;}});}
svelte
Erklärung
1
return store.subscribe((value) => {
Abonniert Werteänderungen eines Svelte-Stores mit einem fehlerabfangenden Wrapper.
2
try { handler(value); } catch (cause) {
Führt die Abonnenten-Logik in einem try-catch-Block aus, um Laufzeitausnahmen abzufangen.
3
const err = new AggregateError(
Erstellt ein AggregateError-Objekt mit der ursprünglichen Fehlerursache und Kontextinformationen.
4
{ cause }
Fügt die abgefangene Ausnahme der cause-Eigenschaft des Fehlers zur Stacktrace-Analyse hinzu.