在 JavaScript 中,try...catch
的错误捕获能力取决于异步代码的实现方式。以下是详细分析:
一、基本结论
异步场景 |
try...catch 是否能捕获错误? |
Promise 内部错误 |
❌ 不能直接捕获,需配合 .catch() |
async/await 错误 |
✅ 可以捕获(使用 await 时) |
setTimeout/setInterval |
❌ 不能捕获(回调在新执行上下文中) |
事件监听回调 |
❌ 不能捕获(回调在新执行上下文中) |
二、具体场景分析
1. Promise 内部错误
- 问题:Promise 内部的错误不会冒泡到外部的 <