什么时候使用?
- 预期可能出现错误
- 希望在错误发生时执行特定恢复逻辑的情况
合理的异常处理策略
- 判断哪些异常应该被捕获并在本地处理
- 判断哪些应该被抛出给上层调用栈去处理。
总结一些需要使用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不能直接捕获异步代码(Promise、async/await等)中的错误,但在异步函数内部的同步代码部分依然可以使用它来捕获错误。