async函数内try/catch仅捕获await等待的Promise拒绝、await后同步错误及thenable的then抛出异常;漏await、回调异步错误、未await的Promise等均不被捕获,需分层兜底处理。
async 函数内部的异常处理,只覆盖 该函数作用域内、且被 await 显式等待的 Promise 拒绝(reject)或同步抛出的错误。它不自动捕获未 await 的 Promise 错误、纯回调异步操作(如 setTimeout 回调、事件监听器)、或函数外部发生的异常。
在 async 函数中,只有满足以下任一条件的错误才会进入其内部的 catch 块:
这些常见情况 不会触发 async 函数内的 try/catch:
someApi().catch(handleErr) 写在 try 外)new Promise((_, reject) => reject('oops')) 但没 await 它)async 函数本身总是返回 Promise。如果内部未捕获错误,这个 Promise 就会变成 rejected 状态。这意味着:
立即学习“Java免费学习笔记(深入)”;
.catch() 或外层 await + try/catch 接住它unhandledrejection 事件)不要把所有 await 塞进一个大 try 块。更合理的方式是:
virtualbox下怎么实现ubuntu20.04开机自动挂载共享文件夹?
ubuntu20.04怎么开启护眼模式? ubuntu夜间模式的设置方法
如何在Ubuntu 20.04上安装Microsoft Edge浏览器
Ubuntu20.10优麒麟触摸手势有哪些? 优麒麟系统新增手势汇总
优麒麟20.04.1发布 更新内容汇总(附下载)
Mermaid Visual Editor 如何同步可视化操作与 Mermaid 源码?