在promise链中创建错误

时间:2014-12-04 19:02:45

标签: javascript node.js promise bluebird

我如何检查属性的JSON,如果它丢失则返回错误退出并捕获链?

var Promise = require("bluebird");
var fs = Promise.promisifyAll(require("fs"));

fs.readFileAsync("myfile.json").then(JSON.parse).then(function (json) {
    if (!json.prop) return new Error("missing prop");
    return json;
}).catch(SyntaxError, function (e) {
    console.error("file contains invalid json");
}).catch(Promise.OperationalError, function (e) {
    console.error("unable to read file, because: ", e.message);
});

取自bluebird documentation

的示例

1 个答案:

答案 0 :(得分:1)

你可以使用typeof操作数,捕获undefined和throw / catch,就像其他错误一样,特别是你可以在你的情况下使用ReferenceError类型:

fs.readFileAsync("myfile.json").then(JSON.parse).then(function (json) {
    if (typeof json.prop === "undefined") throw new ReferenceError("missing prop");
    return json;
}).catch(SyntaxError, function (e) {
    console.error("file contains invalid json");
}).catch(Promise.OperationalError, function (e) {
    console.error("unable to read file, because: ", e.message);
}).catch(ReferenceError,function(e){
    //handle the error
});