Node.js事件循环异常处理
Node js event loop Exception handling
这是关于如何在节点 js 中处理异常的查询。
假设有一个节点 + 快速 Web 服务器。正如我们所知,它在单个线程中处理多个请求 - 服务一个请求,而另一个请求正在等待 IO。
假设在处理请求时会发生未处理的异常。
- 在上面的场景中,挂起的请求不会因为崩溃而被丢弃吗?
- 如果是,是否有明确定义的机制来克服这个问题?
- 是的
您可以在 process
上收听此类错误并避免崩溃:
process.on('unhandledRejection', (理由, 承诺) => {
console.log(原因+“--”+承诺);
});
process.on('uncaughtException', (err) => {
console.error("uncaught exception:" + err + "\n" + err.stack);
});
process.on('error',(错误)=>{
console.log('caught in app error listener: ' + 错误);
});
请注意,覆盖此类侦听器不是最佳做法,因为您可能会在代码中遇到不可预测的行为。
您应该始终在本地方法中处理错误(处理错误回调、检查正确的类型、使用 try...catch
、使用 .catch
等...)
这是关于如何在节点 js 中处理异常的查询。
假设有一个节点 + 快速 Web 服务器。正如我们所知,它在单个线程中处理多个请求 - 服务一个请求,而另一个请求正在等待 IO。
假设在处理请求时会发生未处理的异常。
- 在上面的场景中,挂起的请求不会因为崩溃而被丢弃吗?
- 如果是,是否有明确定义的机制来克服这个问题?
- 是的
您可以在
process
上收听此类错误并避免崩溃:process.on('unhandledRejection', (理由, 承诺) => { console.log(原因+“--”+承诺); });
process.on('uncaughtException', (err) => { console.error("uncaught exception:" + err + "\n" + err.stack); });
process.on('error',(错误)=>{ console.log('caught in app error listener: ' + 错误); });
请注意,覆盖此类侦听器不是最佳做法,因为您可能会在代码中遇到不可预测的行为。
您应该始终在本地方法中处理错误(处理错误回调、检查正确的类型、使用 try...catch
、使用 .catch
等...)