javascript中用try-catch-finally捕获运行时错误:try包裹可能出错的同步代码,catch处理错误对象并可按name区分类型,finally无论是否出错都执行,适合资源清理;三者可组合使用,但异步错误需await后才能被捕获。

JavaScript 中用 try-catch-finally 捕获和处理运行时错误,核心是把可能出错的代码放进 try 块,把错误处理逻辑放在 catch 块,而 finally 块无论是否出错都会执行,适合清理资源。
try 块:包裹可能抛出异常的代码
try 是异常处理的起点,只写它没意义,必须配合 catch 或 finally 使用。里面放同步代码;注意它不捕获异步错误(如 setTimeout 里的 throw),也不捕获语法错误(因为语法错误在解析阶段就报错了,根本进不了 try)。
- 可以只跟
catch,也可以只跟finally,也可以两者都有 - 避免把大量无关代码塞进
try,缩小范围便于定位问题 - 例如:
JSON.parse()、localStorage.getItem()、DOM 操作都常放在try中
catch 块:接收并处理错误对象
catch 接收一个参数(通常叫 error 或 err),它是 JavaScript 抛出的错误实例,包含 message、name、stack 等属性。你可以根据 error.name 区分错误类型,比如 "SyntaxError"、"ReferenceError"、"TypeError"。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 不要忽略
catch里的错误,至少要console.error(err)或上报日志 - 可嵌套多个
try-catch,但一般不推荐深层嵌套,优先用函数封装 + 单层捕获 - ES2022 起支持
catch { ... }(省略参数),仅当不需要访问错误详情时可用
finally 块:总会执行的收尾操作
finally 不管 try 是否抛错、catch 是否运行、甚至 return 是否提前退出,它都一定执行。典型用途包括关闭定时器、释放锁、重置加载状态、清除临时 DOM 节点等。
- 如果
try或catch中有return,finally仍会先执行再返回 -
finally里也return会覆盖前面的返回值(慎用) - 例如:发起请求后在
finally中关闭 loading 动画,确保 UI 总能恢复
常见组合与注意事项
最常用的是 try-catch-finally 三者齐全;若只需清理无需处理错误,可用 try-finally;若只关心错误不需清理,用 try-catch 即可。注意 Promise 和 async/await 的错误要用 catch 方法或 try-catch 包裹 await 表达式,不能靠外层 try 捕获未 await 的 Promise 拒绝。
- 异步错误必须
await后才能被try-catch捕获 - 全局错误(如未捕获的 Promise 拒绝)可监听
window.addEventListener('unhandledrejection') - 自定义错误可用
throw new Error('xxx')或继承Error类
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










