首页 > ExpressJS uncaughtException异常处理办法探讨

ExpressJS uncaughtException异常处理办法探讨

有文章说,不要在process里进行uncaughtException监听,因为会引起进程挂起,但要怎么处理还有待研究。我想出一个办法,就是加一个midleware把response保存起来,然后在uncaughtException里向用户返回。单机可行,虽然还可能存在些问题,但胜于无,在此抛出来让大家看看,如果有更好办法最好了。

    app.use(function (req, res, next) {
        process.responseObject = res;
        next();
    });

    process.on('uncaughtException', function (err) {
        console.error(' Caught exception: ' + err.stack);
        var res = process.responseObject;

        if(!res) return;

        if (app.get('env') === 'development') {
            res.status(err.status || 500);
            res.render('error', {
                message: err.message,
                error: err
            });
        }else{

            res.status(err.status || 500);
            res.render('error', {
                message: err.message,
                error: {}
            });
        }

    });

这个办法好处是进程不会持掉,坏处是response对象是全局的,如果多个用户同时出现问题将引起混乱。

另外还有一个处理方法是让它挂掉,在这里处理一些挂掉前的数据保存,当然了,还得结合pm2来让它重启。


请不要使用此模式,使用cluster或者pm2 cluster model,进行多线程处理,挂掉的重新启动

【热门文章】
【热门文章】