请描述在 Node.js 环境中进行异常捕获与处理的常用方法,并说明不同场景下的适用性。
考察说明
考查对 Node.js 异常处理机制的理解,包括同步/异步、Promise/async、事件驱动等不同场景。
回答思路
- 【回答框架 1】Node.js 中同步代码的异常通常通过 try/catch 捕获,但异步回调中的异常无法被外层 try/catch 捕获,这是 Node.js 异常处理的关键区别。
- 【回答框架 2】对于基于 Promise 的异步操作,可使用 .catch() 方法或在 async/await 函数中使用 try/catch 来捕获异常,并确保在 Promise 链中正确传递错误。
- 【回答框架 3】Node.js 提供 process 对象上的 uncaughtException 和 unhandledRejection 事件来捕获未处理的异常和 Promise 拒绝,但应谨慎使用,避免进程状态不稳定。
- 【回答框架 4】在实际应用中,推荐使用错误优先的回调风格或现代 Promise/async 模式,并考虑使用领域框架(如 Express)的错误处理中间件来集中管理错误。
- 【关键点 1】异步回调中的异常无法被 try/catch 捕获。
- 【关键点 2】Promise 和 async/await 提供了更可靠的异常处理方式。
- 【关键点 3】uncaughtException 和 unhandledRejection 是最后兜底机制。
- 【易错点 1】在 uncaughtException 中继续运行可能导致资源泄漏或状态不一致。
- 【易错点 2】忽略 Promise 中的 rejection 会导致 unhandledRejection 警告。