ES2019起支持可选catch绑定,即catch{...}语法,适用于无需访问错误对象的场景,如重试、兜底、日志后忽略或资源清理,使代码更简洁、意图更明确,且不改变异常传播逻辑。
JavaScript 中的可选 catch 绑定,是指在 try...catch 语句中,catch 子句可以省略参数(即不写 catch (error) 中的 error),直接写
成 catch { ... }。它从 ES2019(ECMAScript 2019)开始正式支持,让开发者在不需要访问错误对象本身时,能写出更简洁、意图更明确的错误处理代码。
很多场景下,你只关心“出错了”,但并不需要知道具体是什么错误、堆栈或消息。比如:
以前必须写一个形参,哪怕不用:
旧写法(冗余):
try {
doSomething();
} catch (err) {
// err 完全没被用到
fallback();
}
新写法(清晰表达意图):
try {
doSomething();
} catch {
fallback();
}
少了变量声明,避免了未使用变量的 ESLint 警告(如 no-unused-vars),也减少了认知负担。
可选绑定不影响异常传播、错误类型判断或 finally 行为。它只是让 catch 块在无需错误引用时更轻量:
finally 使用:try {...} catch { ... } finally { cleanup() }
catch 块内访问 err —— 如果后续需要,就得改回带参数形式现代浏览器和 Node.js 12+ 均已支持。若项目需兼容较老环境(如 IE 或 Node.js err instanceof TypeError)或提取 err.message 时,保留参数。