如何在Q Promise中显示未处理错误的异常

Ali*_*cia 5 q

我注意到,如果.then()由于任何错误(例如,对未定义变量的操作)而导致回调失败并且没有.catch()关联,则错误将被忽略。

在开发过程中这非常不舒服。

例如,此代码将退出而不会显示任何错误:

var Q = require('q');

var promise = Q('something');
promise
.then(function() {
  buggyCode();
})
Run Code Online (Sandbox Code Playgroud)

可能的解决方法是手动添加一个像这样的错误处理程序,但是那没有内置的功能吗?

.catch(function(error) {
  console.error(error.stack);
})
Run Code Online (Sandbox Code Playgroud)

Ali*_*cia 3

显然这是 Q 的限制

为了使错误处理更加详细,有一个方法.done(),应该在所有其他处理程序之后调用它并执行错误报告,类似于我在问题中发布的代码片段。

这并不完美,因为它需要调用每个承诺消费者函数才能.done()使此检查起作用。