Ausnahmebehandlung, ausgelöste Fehler, innerhalb von Versprechungen

Ich führe externen Code als Drittanbietererweiterung für einen node.js-Dienst aus. Die API-Methoden geben Versprechen zurück. Ein gelöstes Versprechen bedeutet, dass die Aktion erfolgreich ausgeführt wurde, ein fehlgeschlagenes Versprechen bedeutet, dass bei der Ausführung der Operation ein Problem aufgetreten ist.

Jetzt habe ich hier Probleme.

Da der Code von Drittanbietern nicht bekannt ist, kann es zu Fehlern, Syntaxfehlern, Typproblemen und einer beliebigen Anzahl von Faktoren kommen, die dazu führen können, dass node.js eine Ausnahme auslöst.

Da jedoch der gesamte Code in Versprechungen eingeschlossen ist, werden diese ausgelösten Ausnahmen tatsächlich als fehlgeschlagene Versprechungen zurückgegeben.

Ich habe versucht, den Funktionsaufruf in einen try / catch-Block einzufügen, aber er wird nie ausgelöst:

// worker process
var mod = require('./3rdparty/module.js');
try {
  mod.run().then(function (data) {
    sendToClient(true, data);
  }, function (err) {
    sendToClient(false, err);
  });
} catch (e) {
  // unrecoverable error inside of module
  // ... send signal to restart this worker process ...
});

Wenn im obigen Pseudocodebeispiel ein Fehler ausgelöst wird, taucht er in der Funktion für fehlgeschlagene Versprechungen auf und nicht im catch.

Nach dem, was ich gelesen habe, ist dies ein Feature, kein Thema, das Versprechungen enthält. Es fällt mir jedoch schwer, mich mit der Frage zu beschäftigen, warum Sie Ausnahmen und erwartete Ablehnungen immer genau gleich behandeln möchten.

In einem Fall handelt es sich um tatsächliche Fehler im Code, die möglicherweise nicht behoben werden können. In dem anderen Fall fehlen möglicherweise nur Konfigurationsinformationen oder ein Parameter oder etwas, das behoben werden kann.

Danke für jede Hilfe!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage