10. Node.js Express 全局处理错误

132 阅读1分钟

在 app.js 中

  1. 404 错误处理
app.use(function (req, res, next) {
    console.log(req.url, '404 error');
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

2. 错误处理

function clientErrorHandler(err, req, res, next) {
    if (req.xhr) {
        console.error('clientErrors response' + err.toString());
        res.status(500).json({error: err.toString()});
    } else {
        next(err);
    }
}

function errorHandler(err, req, res, next) {
    console.error('lastErrors response');
    res.status(500).json({error: err.toString()});
}

app.use(clientErrorHandler);
app.use(errorHandler);

  1. 处理uncaughtException
process.on('uncaughtException', function (err) {
    //打印出错误
    console.log("on uncaughtException");
    console.log(err);
    //打印出错误的调用栈方便调试
    console.log(err.stack);
});

经过实际使用,只要加上这几个异常处理,程序一般情况不会挂掉,个人还没有碰到过会挂掉的情况