javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > JavaScript错误处理

JavaScript错误处理避坑指南

作者:烛阴

JavaScript错误处理是编程过程中不可避免的部分,它涉及到识别、捕获和响应代码运行时可能出现的问题,本文将详细给大家介绍一下JavaScript错误处理的避坑指南,需要的朋友可以参考下

一、错误类型:三大“杀手”与应对策略

1. 语法错误(SyntaxError)

console.log("Hello World';  // 缺少闭合引号  

2. 运行时错误(Runtime Error)

3. 逻辑错误(Logical Error)

二、核心处理机制:try/catch的“三板斧”

1. 基础结构

try {  
  let num = JSON.parse('{invalid json}'); 
  console.log(num);
} catch (error) {  
  console.error("捕获错误:", error.message);  
} finally {  
  cleanupResources();  // 无论成败都会执行  
}  

2. 自定义错误:精准定位问题

抛出语义化错误

class NetworkError extends Error {  
  constructor(url) {  
    super(`请求 ${url} 失败`);  
    this.code = "NETWORK_FAILURE";  
  }  
}  
throw new NetworkError("https://api.example.com");  

优势:通过error.code分类处理不同错误。

3. 性能陷阱

避免在循环内滥用try/catch:V8引擎对try块优化较弱,高频调用可能拖慢性能。

// 错误示范:  
for (let i = 0; i < 1e6; i++) {  
  try { /* 可能失败的操作 */ }  
  catch {}  
}  
// 正确做法:将try/catch外移至循环外层  

三、异步错误处理:Promise与async/await的“暗礁”

1. Promise未捕获错误

fetchData().then(res => { ... }); // 缺少.catch()  
window.addEventListener('unhandledrejection', e => {  
  reportToServer(e.reason);  // 上报至监控系统  
});  

2. async/await的优雅处理

async function loadUserData() {  
  try {  
    const data = await fetch('/api/user');  
    if (!data.ok) throw new Error('状态码异常');  
  } catch (error) {  
    showToast(`加载失败:${error.message}`);  
  }  
}  

到此这篇关于JavaScript错误处理避坑指南的文章就介绍到这了,更多相关JavaScript错误处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文