了解node.js中的try和catch

时间:2014-06-13 23:50:17

标签: node.js error-handling

我是编码的新手。试图理解为什么尝试... catch不应该在node.js中工作。我已经创造了一个例子,但与预期相反,尝试...... catch似乎正在起作用。我的理解在哪里出错了?请帮忙。

function callback(error) { console.log(error); }
function A() {
    var errorForCallback;
    var y = parseInt("hardnut");
    if (!y) {
        throw new Error("boycott parsley");
        errorForCallback = "boycott parsley for callback";
    }
    setTimeout(callback(errorForCallback),1000);
}

try {
    A();
}
catch (e) {
    console.log(e.message);
}
// Output: boycott parsley
// Synchronous behaviour, try...catch works

-----------在阅读下面的答案后重新构思以反映我的理解的例子----------

function callback(error) { console.log(error); }
function A() {
    var errorForCallback;
    setTimeout(function(){
        var y = parseInt("hardnut");
        if (!y) {
            // throw new Error("boycott parsley");
            errorForCallback = "boycott parsley for callback";
        }
        callback(errorForCallback);         
    }, 1000);

}
try {
    A();
}
catch (e) {
    console.log(e.message);
}
// Output: boycott parsley for callback
// Asynchronous behaviour
// And if "throw new Error" is uncommented, 
// then node.js stops

0 个答案:

没有答案