我对Express应用程序中的设计模式有疑问, 因此,我将控制器包装在try and catch中,并且catch方法从控制器发出(req,res)处理程序,稍后将由将响应发送回客户端的函数处理。 代码或多或少是这样的:
const errorExceptionHandler = fn => (req, res, next) => {
fn(req, res, next).catch((err) => {
emitter.emit('onControllerError', {
err: err,
req: req,
res: res,
next: next
})
})
}
上面的代码表示req,res和next,表示提供的默认参数。
emitter.on('onControllerError', params => {
const err = params.err
const req = params.req
const res = params.res
const next = params.next
if (!res.headerSent) {
res.send({
status: 500,
url: process.env.DEBUG ? req.url : undefined,
message: process.env.DEBUG ? err.message : "Something went wrong!"
})
}
})
和上面是'onControllerError'事件的处理方式,我担心的是,如果流量增加,这会在以后引起麻烦吗?还是会向客户发送错误的回复?
答案 0 :(得分:1)
此处的流量增加无关紧要,因为每个请求仍将独立处理,另外所有必需的数据都直接传递给事件处理程序。
所以不,根据您的代码,我无法想到它开始失败的任何原因。