【发布时间】:2015-06-29 21:10:41
【问题描述】:
我很不确定应该如何正确处理我的 node.js/express 应用程序中发生的未捕获异常。现在我有一个 Express 应用程序,它将所有捕获的错误发送到 Express 错误处理程序 using next(err):
function(err, req, res, next) {
// Do something with the error
}
对于我遇到的错误anticipated,这似乎一切正常。例如,数据库连接不工作,基本上所有将返回callback(err) 的东西。当我想执行一个后台任务时会出现思想问题,该任务将在发送响应后完成。例如:
app.get('/url', function(req, res) {
BackgroundTask.run() // Here an uncaught exception occurs, for instance a bug
res.send('Running your background task')
}
我想运行的后台模块不表达相关(不使用req,res)并且在捕获错误时,他们将使用errorHandeler中的自定义,将错误发送给某些人错误报告服务。但是,当这些后台任务之一发生未捕获的异常时,我不知道如何将错误发送到我的错误报告服务(在本例中为 Raygun)。唯一可行的方法是添加一个process.on('uncaughtException') 事件侦听器。然而,几乎所有关于该主题的帖子都将后者描述为一种“糟糕”或粗糙的做事方式。他们似乎建议使用节点 domains 但是我真的不知道如何为后台任务实现这些。
【问题讨论】:
-
为什么不尝试找出您尚未发现的错误,并为这些错误添加适当的错误处理?此外,究竟是什么阻止您从
uncaughtException处理程序向外部服务发送错误报告? -
这是我自己的问题,只是泛泛而谈。信息已过时且重复。
标签: javascript node.js express error-handling