微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有Express的Node.js – 抛出错误vs next(错误)

有人可以在node.js Express应用程序中说明适当的时间来抛出错误,如下所示:

throw new Error('my error');

或者通过回调传递此错误,通常标记为’next’,如下所示:

next(error);

你能解释一下他们每个人在Express应用程序环境中会做些什么吗?

例如,这是一个处理URL参数的快速函数

app.param('lineup_id',function (req,res,next,lineup_id) {
        // typically we might sanity check that user_id is of the right format
        if (lineup_id == null) {
            console.log('null lineup_id');
            req.lineup = null;
            return next(new Error("lineup_id is null"));
        }

        var user_id = app.getMainUser()._id;
        var Lineup = app.mongooseModels.LineupModel.getNewLineup(app.system_db(),user_id);
        Lineup.findById(lineup_id,function (err,lineup) {
            if (err) {
                return next(err);
            }
            if (!lineup) {
                console.log('no lineup matched');
                return next(new Error("no lineup matched"));
            }
            req.lineup = lineup;
            return next();
        });
    });

评论的行中“//我应该在这里创建自己的错误吗?”
我可以使用“抛出新错误(‘xyz’)”,但究竟是什么呢?为什么通常更好地将错误传递给’next’回调?

一个问题是 – 当我在开发中时,如何让“抛出新错误(‘xyz’)”显示在控制台以及浏览器中?

解决方法

一般表示遵循传递错误而不是抛出错误的方式,对于程序中的任何错误,您可以将错误对象传递给“下一个”,还需要定义错误处理程序,以便可以处理传递给下一个的所有错误正确

http://expressjs.com/guide/error-handling.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐