JS中的try...catch

165 阅读1分钟

什么时候使用?

  • 预期可能出现错误
  • 希望在错误发生时执行特定恢复逻辑的情况

合理的异常处理策略

  • 判断哪些异常应该被捕获并在本地处理
  • 判断哪些应该被抛出给上层调用栈去处理。

总结一些需要使用try...catch的前端场景

场景

预期错误处理

  • 当执行可能引发错误的操作时
    • 访问一个可能不存在的对象属性(如json.a.b.c
    • 调用一个可能失败的方法(如读取文件、网络请求)。
try { 
    let json = JSON.parse(str);
    let value = json.a.b.c; 
    // 可能存在json不是对象或a、b属性不存在的情况 } 
catch (error) { 
    console.error("解析JSON数据时发生错误:", error);
}

兼容性处理

  • 不同浏览器对某些API的支持和行为可能不同,可能导致在某些浏览器下出现错误,这时可以捕获错误并根据不同的错误信息进行适配处理。
try { 
    // 使用某个特定浏览器特有的API 
    let element = document.querySelector('#someNonStandardElement'); 
    element.someNonStandardMethod();
} 
catch (error) { 
    console.log("当前浏览器不支持此功能"); 
    // 提供备用方案或警告用户 
}

资源加载失败

  • 加载图片、脚本或其他资源时,可能由于网络问题或资源不存在而失败,这时可以捕获错误并提供回退逻辑。

异步函数中的同步错误

  • 尽管try...catch不能直接捕获异步代码(Promiseasync/await等)中的错误,但在异步函数内部的同步代码部分依然可以使用它来捕获错误。