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.pswp.cn/web/90028.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90028.shtml
英文地址,请注明出处:http://en.pswp.cn/web/90028.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC快速入门之启动配置流程

SpringMVC快速入门之启动配置流程一、SpringMVC启动的核心流程二、环境准备与依赖配置2.1 开发环境2.2 Maven依赖配置三、初始化Servlet容器&#xff1a;WebApplicationInitializer3.1 实现WebApplicationInitializer3.2 配置编码过滤器&#xff08;解决中文乱码&#xff09;四…

ArcGIS水文及空间分析与SWMM融合协同在城市排水防涝领域中的应用

随着计算机的广泛应用和各类模型软件的发展&#xff0c;将排水系统模型作为城市洪灾评价与防治的技术手段已经成为防洪防灾的重要技术途径。将创新性融合地理信息系统&#xff08;GIS&#xff09;的空间分析能力与暴雨雨水管理模型&#xff08;SWMM&#xff09;的水动力计算优势…

PHICOMM(斐讯)N1盒子 - Armbian25.05(Debian 12)刷入U盘/EMMC

PHICOMM(斐讯)N1盒子 - Armbian25.05(Debian 12)刷入U盘/EMMC 文章目录PHICOMM(斐讯)N1盒子 - Armbian25.05(Debian 12)刷入U盘/EMMC前言1. 确保固件版本为2.192. 刷系统到U盘3. 启动U盘系统4. U盘系统写入EMMC5. 关机拨U盘6. 重新上电环境&#xff1a; 系统&#xff1a;Armbi…

《计算机网络基础知识全解析:从协议模型到通信实践》

《计算机网络基础知识全解析&#xff1a;从协议模型到通信实践》 在数字化时代&#xff0c;计算机网络是信息传递的基石&#xff0c;从日常浏览网页到企业数据交互&#xff0c;都离不开网络协议的规范与支撑。本文将系统梳理计算机网络的核心知识&#xff0c;从通信模型到具体协…

【补题】Codeforces Global Round 26 E. Shuffle

题意&#xff1a;给出一棵树&#xff0c;按照以下方式操作 对于当前的所有任意子树&#xff0c;选出任何一个点从中删除&#xff0c;然后作为新子树的根插入到新的树中&#xff0c;以此递归往复&#xff0c;直到原来的树中节点全部进入新树&#xff0c;问新树最多有多少个叶子节…

金仓数据库风云

O 记我用了这么多年&#xff0c;我最有发言权&#xff0c;我可不敢替&#xff0c;你们谁能搞定&#xff0c;谁上。” 老邓在会上&#xff0c;狠狠甩了一句气话。老邓&#xff08;邓铭&#xff09;&#xff0c;某大型期货交易所信息化主管&#xff0c;数据库老司机。 作为圈里最…

阿里云宝塔Linux面板相关操作记录

1、清空nginx缓存使用Nginx时&#xff0c;静态图片文件会出现缓存&#xff0c;所以需要清空缓存&#xff0c;方法如下&#xff1a;sudo rm -rf /www/server/nginx/proxy_cache_dir/*2、Windows启动spring boot jar脚本echo off setlocal enabledelayedexpansion:: 配置项目名 s…

Kotlin伴生对象

你已经知道如何为类创建单例对象&#xff08;singleton&#xff09;。不过&#xff0c;在很多情况下&#xff0c;你只需要为某个类维护一个单例&#xff0c;这时候使用类的完整名字会显得冗长。比如&#xff0c;你可能只需要存储一个公共的属性。这种情况下&#xff0c;可以用 …

4G车载录像机的作用详解:提升行车安全与智能管理的核心技术

1. 引言随着物流运输、公共交通、特种车辆等行业对安全与管理需求的提升&#xff0c;4G车载录像机已成为现代车辆智能化管理的重要组成部分。它不仅具备传统行车记录仪的录像功能&#xff0c;还结合4G无线通信、AI智能分析、GPS定位、云存储等技术&#xff0c;实现远程监控、实…

技术与情感交织的一生 (十)

目录 笑傲江湖 上 恨 嫌隙 挣扎 救难 论道 取巧 联手 入魔 决裂 治伤 聚气 倾心 笑傲江湖 上 恨 身边的许多朋友都是金庸武侠迷&#xff0c;我也是其中之一。有人说&#xff0c;我的技术像 “任我行” &#xff0c;“吸星大法” 学到最后显得不伦不类&#xf…

架构进阶——解读集团IT管控治理体系总体规划【附全文阅读】

集团IT管控治理体系正步入高质量发展阶段&#xff0c;旨在重塑信息化管理价值&#xff0c;解决集团化管理的核心挑战。首要问题是纵向与横向的协同管控&#xff0c;需明确各层级在集团战略决策中的角色与责任&#xff0c;促进跨部门、跨子公司的高效协同。高管激励机制与人才梯…

亚马逊自养号测评实战指南:从环境搭建到安全提排名

在亚马逊平台上&#xff0c;自养号测评系统的成败差异主要源于技术合规性、操作精细度和风控策略的差异。以下是关键因素的分析&#xff1a;&#x1f512; 一、环境隔离与伪装技术底层环境稳定性成功案例&#xff1a;采用独立服务器硬件参数伪装&#xff08;如唯一MAC地址、IME…

CSS中的transform

在 CSS 中&#xff0c;transform 是用于用于用于对元素进行几何变换的属性&#xff0c;可实现旋转、缩放、平移、倾斜等效果&#xff0c;且不会影响其他元素的布局&#xff08;不会触发重排&#xff09;。以下是其核心用法和特性&#xff1a; 1. 基本语法 element {transform: …

MyBatis拦截器插件:实现敏感数据字段加解密

文章目录一、写在前面二、编码实现1、注解2、拦截器插件3、配置插件4、实体类5、测试三、扩展1、优化点一、写在前面 日常开发中&#xff0c;经常有一些敏感数据&#xff0c;直接写入数据库的话&#xff0c;很容易泄露。 本文基于mybatis拦截器插件&#xff0c;实现敏感数据的…

C++_Hello算法_队列

队列&#xff08;queue&#xff09;是一种遵循先入先出规则的线性数据结构。顾名思义&#xff0c;队列模拟了排队现象&#xff0c;即新来的人不断加入队列尾部&#xff0c;而位于队列头部的人逐个离开。 如图 5-4 所示&#xff0c;我们将队列头部称为“队首”&#xff0c;尾部…

LeetCode 1.

问题描述 俩数之和&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素。你可以按…

c练习-c基础

#include <stdio.h>int main() {//打印数组中的最大值int arr[10];int max,i;for (i 0; i < 10; i){scanf_s("%d", &arr[i]);}max arr[0];for (i 0; i < 10; i){if(max < arr[i 1]){max arr[i 1];}}printf("数组中最大值&#xff1a;%…

Numpy科学计算(五分钟小白从入门到精通)

2.1 numpy介绍numpy是Python中科学计算的基础包。它是一个Python库&#xff0c;提供多维数组对象、各种派生对象&#xff08;例如掩码数组和矩阵&#xff09;以及用于对数组进行快速操作的各种方法&#xff0c;包括数学、逻辑、形状操作、排序、选择、I/O 、离散傅里叶变换、基…

从零掌握微服务通信安全:mTLS全解析

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 在云原生时代&#xff0c;微服务架构的普及带来了灵活性和可扩展性&#xff0c;但也让服务间通信的安全性成为核心挑战。mTLS&#xff08;Mutual TLS&…

Node.js net.Socket.destroy()深入解析

socket.destroy() 是 Node.js net 模块中用于强制销毁 TCP 套接字的方法&#xff0c;比 socket.end() 更彻底。下面我将从多个方面全面讲解这个方法。 基本用法 const net require(net);const server net.createServer((socket) > {// 强制销毁套接字socket.destroy(); })…