首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Node.js正确的回调错误句柄

Node.js正确的回调错误句柄
EN

Stack Overflow用户
提问于 2012-08-23 13:45:59
回答 1查看 10.7K关注 0票数 1

让我们看看下面的代码:

mongodb.js

代码语言:javascript
运行
复制
var mongo = require('mongodb')
  , mongodb = module.exports;

mongodb.database = function(key, dbName, dbServer, callback){
  var db = new mongo.Db(dbName, dbServer);
  db.open(function(error, connection){ // 5
    if(error){ // 1
      throw error;
    }

    return callback(null, connection);
  });
};

mongodb.collection = function(dbKey, collName, callback){
  mongodb.database(dbKey, function(error, connection){
    connection.collection(collName, function(error, collection){ // 2
      if(error){ // 3
        throw error;
      }

      return callback(null, collection);
    });
  });
}

model.js

代码语言:javascript
运行
复制
var db = require('./mongodb.js');
var model = module.exports;

model.test = function(callback){
  db.collection('users', function(error, collection){ // 4
    // do something.
  });
}

我的问题是,当回调被传递时,为什么我们总是做“错误,资源”,因为,看看1

我们正在处理错误,所以它甚至达不到2*

34一样,它们总是为NULL,因为错误是在不同的层上处理的。为什么我不直接在5上这么做

代码语言:javascript
运行
复制
db.open(function(error, connection){
  if(error){ // 1
    return errorHandler(error);
  }

  return callback(collection);
});

errorHandler函数将是一个处理重大错误的函数,所以我们不必在每一层使用它们,例如mongodb.findOne,为什么我们在传入回调时必须处理错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-23 14:58:56

我使用的callback(error,result)模式主要是当错误没有抛出任何地方(或捕获)。也就是说,您不想仅仅因为缺少一些参数而停止应用程序。请查看以下代码:

代码语言:javascript
运行
复制
function somethingAsync (options, callback) {
  if (!options || !options.name) {
    callback('no name specified'); //we dont want to kill the Application
    return;
  };
  doSomeThingInternal(callback);
};

在使用者端,您可以从任何内部函数将错误打印给客户端。

代码语言:javascript
运行
复制
somethingAsync(null, function (err,res)) {
  if(err) {
    console.log('error occured: ' + err);
  };
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12093085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档