0
我遵循了this question处的推荐解决方案,但我仍然看到错误打破了我的观察者。防止非流式错误打破饮用水手表
由于观察者是这样的:
var through = require('through2');
var watch = require('gulp-watch');
gulp.task('catchall', function() {
return watch('gulpfile.js')
.pipe(through.obj(externalFunc))
.on('error', function(err) {
console.log('Inside error handler:', err);
});
});
随着externalFunc定义为:
function externalFunc(file, enc, done) {
throw new Error("I have been compromised - Abort mission!");
}
我希望看到的输出:
[10:52:51] Starting 'catchall'...
[10:52:53] gulpfile.js was changed
Inside error handler: I have been compromised - Abort mission!
相反,我没有得到任何输出从externalFunc
,而是得到标准的错误输出和堆栈跟踪:
[10:52:51] Starting 'catchall'...
[10:52:53] gulpfile.js was changed
/my/path/to/gulpfile.js:27
throw new Error("I have been compromised - Abort mission!");
^
Error: I have been compromised - Abort mission!
at DestroyableTransform.externalFunc [as _transform] ....
最重要的是,观察者崩溃。
为什么这个错误没有被on('error')
监听器困住,我可以在一个吞咽监视器中如何处理这些错误而不退出?