NodeJS - app.use(function(err, req, res, next){}) 和 process.on('uncaughtException', function(err){}) 之间的区别
NodeJS - Difference between app.use(function(err, req, res, next){}) and process.on('uncaughtException', function(err){})
我正在尝试在我的节点项目上创建一个错误处理程序,但我不明白。
对于抛出的错误,我可以通过两种不同的方式捕获:
process.on()
process.on('uncaughtException', function(err) {
// Nothing to do... Client request can't be closed
});
app.use()
app.use(function(err, req, res, next) {
res.send("Humm... To bad !", 500);
});
我正在使用一个带有 RESTful API 的函数 :
app.use(function(req, res, next) {
// throw new Error("This error is caught by app.use()");
api.getData(function(err, result) {
if (err) {
// throw new Error("This error is caught by process.on()");
}
/* Some code here */
});
});
我真的不明白两者之间有什么区别..而且我不喜欢 process.on() 方式,在这个 catch 上我无法访问 req 和 res 来发送给客户端的 500 错误页面..
process.on() 将处理流程中任何未捕获的错误,而 app.use 是处理请求处理错误的正确方法。您还可以通过调用 next(err)
定义多个此类处理程序并链接在一起
我正在尝试在我的节点项目上创建一个错误处理程序,但我不明白。
对于抛出的错误,我可以通过两种不同的方式捕获:
process.on()
process.on('uncaughtException', function(err) {
// Nothing to do... Client request can't be closed
});
app.use()
app.use(function(err, req, res, next) {
res.send("Humm... To bad !", 500);
});
我正在使用一个带有 RESTful API 的函数 :
app.use(function(req, res, next) {
// throw new Error("This error is caught by app.use()");
api.getData(function(err, result) {
if (err) {
// throw new Error("This error is caught by process.on()");
}
/* Some code here */
});
});
我真的不明白两者之间有什么区别..而且我不喜欢 process.on() 方式,在这个 catch 上我无法访问 req 和 res 来发送给客户端的 500 错误页面..
process.on() 将处理流程中任何未捕获的错误,而 app.use 是处理请求处理错误的正确方法。您还可以通过调用 next(err)
定义多个此类处理程序并链接在一起