obsługa wyjątków, rzucone błędy, w ramach obietnic

Używam zewnętrznego kodu jako rozszerzenia zewnętrznego do usługi node.js. Metody API zwracają obietnice. Rozwiązana obietnica oznacza, że ​​akcja została wykonana pomyślnie, obietnica nieudana oznacza, że ​​wystąpił jakiś problem z przeprowadzeniem operacji.

Teraz mam kłopoty.

Ponieważ kod strony trzeciej jest nieznany, mogą wystąpić błędy, błędy składniowe, problemy z typem, dowolna liczba rzeczy, które mogą spowodować, że node.js wyśle ​​wyjątek.

Jednakże, ponieważ cały kod jest zawinięty w obietnice, te rzucone wyjątki w rzeczywistości powracają jako nieudane obietnice.

Próbowałem umieścić wywołanie funkcji w bloku try / catch, ale nigdy się nie uruchamia:

// 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 ...
});

W powyższym przykładzie kodu psuedo, gdy zostanie zgłoszony błąd, pojawia się on w nieudanej funkcji obietnicy, a nie w łapaniu.

Z tego, co czytam, jest to funkcja, a nie problem, z obietnicami. Mam jednak problem z zawinięciem głowy, dlaczego zawsze chcesz traktować wyjątki i oczekiwane odrzucenia dokładnie tak samo.

Jeden przypadek dotyczy faktycznych błędów w kodzie, prawdopodobnie niemożliwych do odzyskania - drugi to tylko możliwe brakujące informacje o konfiguracji, parametr lub coś do odzyskania.

Dzięki za pomoc!

questionAnswers(3)

yourAnswerToTheQuestion