JavaScript的try...catch用于捕获同步运行时错误,防止脚本崩溃;支持catch捕获Error对象并推荐用message属性,finally确保清理代码执行;但无法捕获异步错误,需在回调或Promise中单独处理。

JavaScript 中的 try...catch 是最常用、最基础的同步错误处理机制,用来捕获并处理运行时错误,防止脚本崩溃。
基本用法:包裹可能出错的代码
把可能抛出异常的代码放进 try 块里,出错时自动跳转到 catch 块处理:
try {
let result = someUndefinedFunction(); // 这里会报 ReferenceError
console.log(result);
} catch (error) {
console.error('出错了:', error.message); // 输出:出错了: someUndefinedFunction is not defined
}
注意:catch 参数(如这里的 error)是一个 Error 对象,通常有 message、name、stack 等属性,推荐优先用 error.message 获取简明错误信息。
可选:用 finally 做“无论成败都执行”的清理工作
finally 块总会执行,适合关闭连接、重置状态、隐藏 loading 等:
立即学习“Java免费学习笔记(深入)”;
动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
- 即使
try正常结束,finally也执行 - 即使
catch捕获了错误,finally也执行 - 即使
try或catch里写了return,finally仍先执行
try {
fetchData();
} catch (err) {
console.error(err);
} finally {
setLoading(false); // 保证 loading 状态被清除
}
进阶技巧:按错误类型分别处理
不是所有错误都该一视同仁。你可以用 instanceof 或 error.name 区分错误类型:
try {
JSON.parse('{ "invalid": json }');
} catch (error) {
if (error instanceof SyntaxError) {
console.warn('JSON 格式错误,请检查输入');
} else if (error.name === 'TypeError') {
console.warn('类型不匹配,比如对 null 调用了方法');
} else {
console.error('其他未知错误:', error.message);
}
}
常见错误类型包括:SyntaxError、ReferenceError、TypeError、RangeError、URIError 等。
注意:try catch 只捕获同步错误
它无法捕获异步错误(如 setTimeout、Promise 内部抛出的错误),除非你在异步回调内部自己加 try...catch:
- ❌ 错误写法(不会捕获):
try { setTimeout(() => { throw new Error('异步错误'); }, 100); } catch (e) { console.log('这行不会执行'); } - ✅ 正确写法(在回调内捕获):
setTimeout(() => { try { throw new Error('异步错误'); } catch (e) { console.error(e.message); } }, 100); - ✅ Promise 错误建议用
.catch()或await + try...catch(配合 async 函数)
基本上就这些。用好 try...catch 不复杂,但容易忽略异步场景和错误分类,实际开发中搭配 console.error 和监控上报,能大幅提升健壮性。










