Javascript 在我的代码末尾使用.catch更好吗?

Javascript 在我的代码末尾使用.catch更好吗?,javascript,try-catch,Javascript,Try Catch,最好在代码末尾使用.catch,还是使用普通的try/catch? 你能解释一下吗 例1: 例2: 承诺拒绝是异步的,使用try/catch块只能捕获同步错误 您可以使用新的async/await语法,并通过babel或其他方式进行编译,具体取决于您希望在何处运行代码 在节点v8中工作的异步/等待示例+ try { const obj = await User.findOne({ _id: 444, User }); console.log(obj.inviteCount);

最好在代码末尾使用.catch,还是使用普通的try/catch? 你能解释一下吗

例1:

例2:


承诺拒绝是异步的,使用try/catch块只能捕获同步错误

您可以使用新的async/await语法,并通过babel或其他方式进行编译,具体取决于您希望在何处运行代码

在节点v8中工作的异步/等待示例+

try {
    const obj = await User.findOne({ _id: 444, User });
    console.log(obj.inviteCount);

    return obj.inviteCount;
} catch(err) {
    console.log(err);
}
或者您可以使用bluebird的Promise.coroutine在节点6+中工作:

// load bluebird first, so the `Promise` object is monkey patched
// or in node use `const Promise = require('bluebird');`
Promise.coroutine(function*() { 
    try {
        const obj = yield User.findOne({ _id: 444, User });
        console.log(obj.inviteCount);

        return obj.inviteCount;
    } catch (e) {
        console.log(err);
    }
})();

例2实际上不起作用。承诺中的错误通过承诺拒绝传递,只能使用.catch捕获。所以你的第二个示例catch语句永远不会被触发。由于我的英语不好,我不太理解可能的重复,你能解释一下并给我写一个示例吗?在secend示例中如何使用try-catch?您的意思是,如果我在secend示例中添加async/await,我可以使用它吗。请给我举个例子
try {
    const obj = await User.findOne({ _id: 444, User });
    console.log(obj.inviteCount);

    return obj.inviteCount;
} catch(err) {
    console.log(err);
}
// load bluebird first, so the `Promise` object is monkey patched
// or in node use `const Promise = require('bluebird');`
Promise.coroutine(function*() { 
    try {
        const obj = yield User.findOne({ _id: 444, User });
        console.log(obj.inviteCount);

        return obj.inviteCount;
    } catch (e) {
        console.log(err);
    }
})();