JavaScript作为浏览器端最主要的脚本语言,在复杂业务场景下经常会出现运行时错误。合理地使用异常捕获与错误处理方法,可以有效避免页面崩溃并提升用户体验。常见的处理手段包括try catch、Promise捕获以及全局错误监听等。

一、使用try catch捕获同步异常
最基础的异常捕获方式是try catch语句,它只能捕获同步执行过程中的错误,无法捕获异步回调中的异常。
try {
// 可能抛出错误的同步代码
let data = JSON.parse('{name: 1}'); // 格式错误会抛异常
console.log(data);
} catch (error) {
// 捕获并处理异常
console.log('捕获到错误:' + error.message);
} finally {
// 无论是否出错都会执行
console.log('清理工作');
}
二、Promise中的错误处理
对于Promise对象,应使用catch方法进行异常捕获,否则未处理的拒绝会触发全局unhandledrejection事件。
let promise = new Promise(function(resolve, reject) {
reject(new Error('请求失败'));
});
promise
.then(function(result) {
console.log(result);
})
.catch(function(err) {
console.log('Promise捕获:' + err.message);
});
三、async await的异常捕获
async函数返回的仍是Promise,可以用try catch直接包裹await表达式来捕获异步错误。
async function getData() {
try {
let res = await fetch('https://ipipp.com/api/data');
let json = await res.json();
return json;
} catch (e) {
console.log('async捕获:' + e.message);
}
}
四、全局异常监听
为了兜底未被捕获的错误,可以监听window的error事件和unhandledrejection事件。
window.onerror = function(message, source, line, col, error) {
console.log('全局错误:' + message);
};
window.addEventListener('unhandledrejection', function(event) {
console.log('未处理的Promise拒绝:' + event.reason);
});
五、常见注意事项
- try catch无法捕获语法错误和异步回调内的错误
- 使用<code>标签说明代码术语时,其内部内容需转义,如写<input>表示标签名
- 函数调用例如JSON.parse()不是标签,不要写成标签形式
- 生产环境建议将错误日志上报到监控平台
良好的错误处理不是等出错再修,而是在编写阶段就预设异常路径,让程序失败得可控。
JavaScript异常捕获错误处理修改时间:2026-07-29 01:42:20