0

我有一个巨大的解析功能,如果文件正确,它工作得很好,但我不能正确处理错误。

function parse (pathname, callback){
    //Some variables

    fs.open(pathname, 'r', function(err, fd){
        if (err){console.log('Error Opening the file'); callback(-1);}
        console.log('Begin the parsing');
        //Do the parsing

但是如果我给出一个无效的路径名,我会收到错误消息,并且函数会继续执行,直到读取时出现致命错误。

我以为回调正在结束函数,但似乎我错了。

我可以做类似的事情:

function parse (pathname, callback){
    //Some variables

    fs.open(pathname, 'r', function(err, fd){
        if (err){console.log('Error Opening the file'); callback(-1);}
        else{
            console.log('Begin the parsing');
            //Do the parsing

但是里面有很多错误处理,而且功能非常庞大。

在其他的代码中我通常看到

if (err){throw err;}

但是我从来没有成功地做任何事情,即使是简单的事件,所以我也想避免这种情况,如果我不处理它,它最终会关闭应用程序,这也是我不想要的。

有没有一种巧妙的方法让我以另一种方式处理错误?

4

1 回答 1

1

您可以使函数parse返回,这将中断函数执行。

if (err) {
    console.log('Error opening the file');
    callback(-1);
    return; // Alternatively return false or anything you want
}

调用callback(-1)不会结束函数,因为它是一个简单的函数调用,就像console.log()任何其他函数一样。

于 2013-09-10T12:55:37.847 回答