try...catch用于捕获同步错误,语法为try块放可能出错代码、catch块处理Error对象(含message/name/stack),finally块必执行;它无法捕获异步错误、语法错误和未处理的Promise拒绝。
JavaScript 中的 try...catch 是最基础也最常用的同步错误处理机制,它能帮你捕获运行时异常,避免脚本崩溃,并实现更友好的降级或提示逻辑。
语法很简单:把可能出错的代码放在 try 块里,把错误处理逻辑放在 catch 块里。如果 try 中抛出异常(比如调用不存在的方法、访问 undefined 的属性、JSON.parse 失败等),就会立即跳转到 catch 执行。
示例:
```js```
catch 后面的参数(常写作 error 或 err)是一个 Error 对象,通常包含:
"Unexpected token ','")"SyntaxError"、"ReferenceError")你可以根据 error.name 做差异化处理:
```
加上 finally 块,无论是否出错、是否被 catch 捕获,里面的代码都会执行。适合做清理工作,比如关闭加载状态、释放资源、重置变量等:
```
注意:try...catch 只捕获**同步错误**和 **try 块内抛出的错误**。以下情况它无能为力:
setTimeout、Promise 构造函数内部)——除非你在回调里自己加 try/catch.catch() 或 async/await + try...catch)window.onerror 或 process.on('uncaughtException') 才能兜底)正确捕获 Promise 错误示例:
```js
try {```
基本上就这些。掌握 try...catch 的边界和配合方式,就能覆盖大部分前端日常错误处理场景。