onError()

Abo von Fehlern des Dashlet-Handles. Dies ist der Fehlerkanal: Fehler, die die Bibliothek beobachten, aber nicht auflösen kann — Timeouts, Host-Fehler und Fehler, die Ihre eigenen Listener werfen.

1. Signatur

onError(listener: (error: unknown) => void): () => void;
  • listener — erhält den Fehlerwert (unknown: eine TimeoutError, ein Host-Fehler-Payload oder eine durch einen Listener geworfene Ausnahme).

  • Gibt eine Abmeldefunktion zurück.

2. Was hier läuft

Die dokumentierte Weiterleitung der Bibliothek (exakt, wie implementiert):

  • Listener-Fehler. Eine von einem onInit- oder onUpdate-Listener geworfene Ausnahme — einschließlich einer nachgelieferten onInit-Zustellung an einen späten Abonnenten — wird gefangen und an jeden onError-Listener zugeliefert. Dies ist die primäre Fehlerquelle auf einer ordentlich arbeitenden Dashlet-Seite: ein Bug in Ihrer Render-Funktion erscheint hier, nicht als ungefangene Ausnahme.

  • Ersetztes Host-Global (nur Rich Client). Ersetzt anderer Code auf der Seite window.osDashletInit, gehen die Auswahl-Callbacks des Rich Clients an diesen Code statt an das Dashlet. Sobald das Dashlet im Rich Client aufgelöst ist, erhält jeder onError-Listener ein einfaches Error, dessen Meldung mit Dashlet: window.osDashletInit was replaced by other code beginnt. Sie kommt höchstens einmal pro Dashlet-Instanz, auch für ein Ersetzen vor der Auflösung des Inits. Die Bibliothek holt sich das Global nicht zurück und leitet keine Host-Aufrufe an die fremde Funktion weiter: Entfernen Sie die zweite Dashlet-Schicht von der Seite. Im Webclient, im Standalone und bei einem Rich Client, der über den Webclient-Wire aufgelöst wurde, gibt es keine Meldung, und ein zweiter installDashletGlobal-Aufruf ist kein Ersetzen. Nach der Auflösung des Inits werden nur Zuweisungen beobachtet: eine spätere globale Funktionsdeklaration, Object.defineProperty, delete oder eine zweite Kopie der Bibliothek bleiben ungemeldet.

  • Keine Kaskade. Wenn ein onError-Listener selbst eine Ausnahme wirft, wird diese verschluckt — ein Fehler-Listener darf nicht kaskadieren. (So kann ein kaputter Fehler-Handler weder den Host-Aufruf noch die anderen Listener mitreißen.)

Der dokumentierte Zweck des Abos ist es, Fehler im Allgemeinen zu beobachten (Timeouts, Host-Fehler, Listener-Fehler, das ersetzte Host-Global); welche konkreten Fehlerwerte erscheinen, hängt vom Fehlerpfad ab (siehe Fehler und call für die Fehlerpfade der Methodenaufrufe).

3. Hinweise

  • onError verändert keine Steuerung: Es ist Beobachtung, keine Wiederherstellung. Fehlgeschlagene Methodenaufrufe lehnen weiterhin ihre eigenen Promises ab; onError liefert einen zweiten, Nebenspur-Blick.

  • Registrieren Sie es früh (Top-Level, neben installDashletGlobal), damit Listener-Fehler aus der ersten Auflösung nicht verpasst werden.

4. Beispiele

const off = dashlet.onError((error) => {
    console.error('dashlet failure:', error);
    // z. B. protokollieren, toast, degradieren — nicht neu werfen
});

// später
off(); // abmelden