Javascript 使用回调函数捕获错误

Javascript 使用回调函数捕获错误,javascript,throw,Javascript,Throw,我编写中间件是为了使用外部代码来管理用户帐户。当我创建一个新帐户时,我会按照以下代码使用经理的相关功能: .post(function(req,res,next){ UsersManager.createUser(req.body.username,req.body.password,function(err){ if(err){ res.json({ success: false,

我编写中间件是为了使用外部代码来管理用户帐户。当我创建一个新帐户时,我会按照以下代码使用经理的相关功能:

.post(function(req,res,next){
        UsersManager.createUser(req.body.username,req.body.password,function(err){
            if(err){
                res.json({
                    success: false,
                    message: 'User NOT created',
                });             
            }else{
                res.json({
                    success: true,
                    message: 'User '+req.body.username+' created',
                });
            }
        });
    });
createUser: function(username,password,callback){
        var new_user = new User({
            username: username,
            password: password
        });
        User.findOne({username:username},function(err,user){
            if(!user) new_user.save(callback);
            else{
                var err = 1;
                callback(err);
            }
        });

    }
但是,例如,当用户已经存在时,我无法捕获错误。My
UsersManager.createUser
代码如下:

createUser: function(username,password,callback){
        var new_user = new User({
            username: username,
            password: password
        });
        User.findOne({username:username},function(err,user){
            if(!user) new_user.save(callback);
            else throw err;
        });

    }
错误是:

错误:未捕获、未指定的“错误”事件。(空)


我应该如何处理最后一行
else throw err
,以便被回调捕获?为了处理用户管理,您对我的代码结构有何看法?

我使用以下代码解决了这个问题:

.post(function(req,res,next){
        UsersManager.createUser(req.body.username,req.body.password,function(err){
            if(err){
                res.json({
                    success: false,
                    message: 'User NOT created',
                });             
            }else{
                res.json({
                    success: true,
                    message: 'User '+req.body.username+' created',
                });
            }
        });
    });
createUser: function(username,password,callback){
        var new_user = new User({
            username: username,
            password: password
        });
        User.findOne({username:username},function(err,user){
            if(!user) new_user.save(callback);
            else{
                var err = 1;
                callback(err);
            }
        });

    }