обработка исключений, сгенерированные ошибки, в рамках обещаний

Я использую внешний код как стороннее расширение для службы node.js. Методы API возвращают обещания. Выполненное обещание означает, что действие было выполнено успешно, невыполненное обещание означает, что при выполнении операции возникла некоторая проблема.

Теперь вот где у меня проблемы.

Так как сторонний код неизвестен, могут быть ошибки, синтаксические ошибки, проблемы с типами, любое количество вещей, которые могут привести к тому, что node.js вызовет исключение.

Однако, поскольку весь код обернут в обещания, эти сгенерированные исключения фактически возвращаются как невыполненные обещания.

Я пытался поместить вызов функции в блок try / catch, но он никогда не срабатывал:

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

В приведенном выше примере псевдо-кода, когда выдается ошибка, она обнаруживается в функции сбойного обещания, а не в перехвате.

Из того, что я прочитал, это особенность, а не проблема с обещаниями. Однако у меня возникают проблемы с обдумыванием того, почему вы всегда хотите относиться к исключениям и ожидаемым отклонениям точно так же.

В одном случае речь идет о реальных ошибках в коде, которые, возможно, не устраняются, а в другом случае просто отсутствует информация о конфигурации, или параметр, или что-то, что можно исправить.

Спасибо за любую помощь!

Ответы на вопрос(3)

Ваш ответ на вопрос