当前位置: 首页 > news >正文

JavaScript,发生异常,try...catch...finally处理,继续向上层调用者传递异常信息

JavaScript中,‌异常(Exception)和错误(Error)

JavaScript 是一种解释型语言,通常在浏览器中通过JavaScript引擎执行。最著名的两个引擎是:SpiderMonkey(由 Mozilla Firefox 使用)和V8(由 Google Chrome 和 Node.js 使用)。

错误(Error):编译或解析阶段的致命问题(如语法错误),程序无法运行。 ‌‌处理方式‌:需开发者修复代码后才能运行,无法通过程序逻辑处理。

异常(Exception):运行时发生的可处理问题(如调用未定义方法、文件不存在),程序可继续运行。‌处理方式‌:通过try-catch结构捕获并恢复执行,避免程序终止。

Error对象及错误处理机制:https://blog.csdn.net/c_s_d_n_2009/article/details/149408647

JavaScript的finally块

JavaScript,finally块通常用于执行无论是否捕获到异常都必须执行的代码。

1、捕获了异常后,不再向上层调用者传递任何异常信息,使用finally处理。

async function fetchData(path) {const data = await fetch(path).then((response) => {if (!response.ok) {throw new Error("Network response was not ok");}return response.json();});return data;
}// 向上层调用者继续传递异常
async function getData() {let data = {};try {// 模拟一个可能失败的操作data = await fetchData("https://www.sequelize.cn/");} catch (error) {throw new Error("错误: " + error.message);} finally {// 使用了finally,return data;}// return data;
}async function main() {try {const data = await getData();console.log("Data:", data);} catch (error) {console.error("Error fetching data:", error);}
}main();

输出: Data: {}

2、捕获了异常后,还想继续向上层调用者传递异常信息,不使用finally处理。

async function fetchData(path) {const data = await fetch(path).then((response) => {if (!response.ok) {throw new Error("Network response was not ok");}return response.json();});return data;
}// 向上层调用者继续传递异常
async function getData() {let data = {};try {// 模拟一个可能失败的操作data = await fetchData("https://www.sequelize.cn/");} catch (error) {throw new Error("错误: " + error.message);}// finally {//   // 使用了finally,//   return data;// }return data;
}async function main() {try {const data = await getData();console.log("Data:", data);} catch (error) {console.error("Error fetching data:", error);}
}main();

输出:  Error fetching data: Error: 错误: Unexpected token '<', "<!doctype "... is not valid JSON

http://www.lryc.cn/news/596051.html

相关文章:

  • zabbix“专家坐诊”第295期问答
  • 服务器无法访问公网的原因及解决方案
  • 在 WebSocket 中使用 @Autowired 时遇到空指针异常
  • XML高效处理类 - 专为Office文档XML处理优化
  • 智能制造——解读52页汽车设计制造一体化整车产品生命周期PLM解决方案【附全文阅读】
  • 智慧制造合同解决方案
  • React 项目性能优化概要
  • 客户案例 | Jabil 整合 IT 与运营,大规模转型制造流程
  • 厚铜板载流革命与精密压合工艺——高可靠性PCB批量制造的新锚点
  • 中小制造企业如何对技术图纸进行管理?
  • OneCode 3.0 @FormAnnotation 注解速查手册
  • 漫画版:细说金仓数据库
  • Qt/C++源码/监控设备模拟器/支持onvif和gb28181/多路批量模拟/虚拟监控摄像头
  • 秋招Day17 - Spring - AOP
  • 《基于蛋白质组学的精准医学》:研究进展与未来展望
  • 双指针算法介绍及使用(上)
  • GitHub 上的开源项目 ticktick(滴答清单)
  • MSTP技术
  • 【加解密与C】Rot系列(四)RotSpecial
  • 解决http下浏览器无法开启麦克风问题
  • haproxy七层均衡
  • n1 armbian docker compose 部署aipan mysql
  • 理解后端开发中的API设计原则
  • 清华大学顶刊发表|破解无人机抓取与投递难题
  • 第三章 Freertos物联网实战esp8266模块
  • LIMO:仅需817样本激活大模型数学推理能力,挑战“数据规模至上”传统范式
  • 从零构建智能对话助手:LangGraph + ReAct 实现具备记忆功能的 AI 智能体
  • MatterPort3D 数据集 | 简介 | 多途径下载
  • 低成本、高泛化能力的无人机自主飞行!VLM-Nav:基于单目视觉与视觉语言模型的无地图无人机导航
  • 基于模拟的流程为灵巧机器人定制训练数据