如何处理与Koa的意外错误

时间:2016-10-07 10:40:29

标签: node.js koa

我有一个使用koa的简单Web应用程序,并且希望在发生我不期望的错误时崩溃进程。不幸的是,koa似乎总是捕获错误,将其报告给stderr并保持进程运行。有没有办法覆盖这种行为?

我已经回顾了Does Koa safely handle errors?,它提到了koa不会陷阱的2个场景,但是它表明第一个场景格式不正确,我无法弄清楚如何使用第二个场景。

作为参考,我有以下错误处理程序,它尝试使用唯一的'id id向用户报告失败,然后使用setImmediate方法崩溃:

app.use(function* (next) {
    try {
        yield next;
    } catch (err) {
        // https://stackoverflow.com/questions/10985872/nodejs-generate-short-unique-alphanumeric
        var tuple = this.request.socket.remoteAddress + ":" + this.request.socket.remotePort;
        var errorSession = parseInt(tuple.replace(/[^\d]/g, ''), 10).toString(36).toUpperCase();
        err.message = "["+errorSession+"] "+err.message;
        logger.error(err);
        this.status = err.status || 500;
        yield this.render('unknown-error', { errorSession : errorSession });

        // this kinda works, but is considered malformed
        setImmediate(function () { throw err;});
    }
});

0 个答案:

没有答案