MST

星途 面试题库

面试题:Node.js中如何捕获未处理的Promise拒绝错误

在Node.js项目中,通常有哪些方法可以捕获未处理的Promise拒绝错误?请至少列举两种,并说明每种方法的应用场景及原理。
31.2万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试
  1. .catch() 方法
    • 应用场景:在Promise链中,当某个Promise被拒绝时,使用.catch()方法可以捕获该拒绝错误。适用于对单个Promise或Promise链中特定部分的错误处理。例如,在进行数据库查询操作返回Promise时,如果查询失败,可以使用.catch()捕获错误并进行相应处理,如记录错误日志、返回友好的错误信息给用户。
    • 原理:当Promise被拒绝时,它会沿着Promise链向后传递,直到遇到第一个.catch()块。.catch()本质上是.then(null, onRejected)的语法糖,其中onRejected函数会接收被拒绝的原因作为参数,从而实现对错误的捕获和处理。
  2. process.on('unhandledRejection') 事件
    • 应用场景:用于捕获整个Node.js进程中未被处理的Promise拒绝错误。通常用于全局监控和记录未处理的Promise拒绝情况,以便在生产环境中及时发现潜在问题。比如,在一个复杂的Node.js应用中,可能有多个模块返回Promise,如果某个模块中的Promise拒绝没有被正确处理,可以通过这个事件来捕获并进行统一处理,如发送错误报告到监控系统。
    • 原理:Node.js的process对象提供了unhandledRejection事件。当Promise被拒绝且没有相应的.catch()处理程序时,会触发该事件。事件处理函数会接收拒绝原因和被拒绝的Promise实例作为参数,允许开发者在全局层面处理这些未处理的拒绝错误。