Express错误处理中间件的参数使用

来源:互联网 发布:app下载排名 优化 编辑:程序博客网 时间:2024/05/18 03:01

Express中,错误处理通过特殊的中间件来完成。如前所述,一般中间件的参数为3个:req,resnext。如果你use一个4个参数的中间件,它将被Express视为错误处理中间件。下面便是一个错误处理中间件,当出于开发环境时使用:

// file: app.jsif (app.get('env') === 'development') {    app.use(function(err, req, res, next) {        res.status(err.status || 500); // 状态码默认为500(服务器内部错误)        res.render('error', {            message: err.message,            error: err    // 生产环境中应设为 `error: {}`,禁止输出错误        });    });}

 提示

这里的res.render将第二个参数指定的数据传递给第一个参数指定的模板error.hbs,得到HTML并返回给浏览器。这个过程成为渲染,下一节课我们详细介绍。

错误处理中间件何时会执行呢?当然是当错误发生时。你需要手动地将错误传递给错误处理中间件。不妨在app.js中创建如下的中间件来测试错误处理:

// file: app.jsapp.get('/throw/error', function(req, res, next){    var err = new Error('i am an error');    next(err);});

访问localhost:3000/throw/error,将会触发该控制器,进而触发错误处理中间件。中间件的第三个参数next为下一个中间件。还记得吗?中间件是一个队列,如果一个中间件未能处理完该请求,请通过调用next()来交给下一个中间件。

  • 如果带不带参数调用(如next())则会传递给下一个普通中间件;
  • 如果带参数调用(如next(err))则会传递给下一个错误处理中间件。
1 0
原创粉丝点击