仿站是什么/品牌营销策略有哪些
JavaScript青少年简明教程:异常处理
在 JavaScript 中,异常指的是程序执行过程中出现的错误或异常情况。这些错误可能导致程序无法正常执行,甚至崩溃。ECMA-262规范了多种JavaScript错误类型,这些类型都继承自Error基类。主要的错误类型包括:
Error:这是所有错误的基类。
EvalError:这个描述部分正确,但需要注意的是,在现代JavaScript中,EvalError几乎不再被使用。eval()函数的错误通常会抛出其他类型的错误(如SyntaxError)。
SyntaxError:当JavaScript代码不符合语法规则时抛出。
ReferenceError:当引用一个未声明的变量时,或者在变量声明之前访问块级作用域中的变量时抛出。
TypeError:当操作数或参数的类型与预期不符时抛出。
URIError:当使用全局URI处理函数时,如果URI格式不正确会抛出此错误。
RangeError:当数值变量或参数超出其有效范围时抛出。
此外,开发者可以通过继承Error或其子类来创建自定义异常。
JavaScript 的异常处理机制通过 try...catch...finally 语句和 throw 语句提供了一种优雅的方式来捕获和处理运行时错误。
以下是关键点:
try...catch 语句:用于捕获和处理在 try 块中发生的异常。
finally 块:无论是否发生异常,都会执行,用于清理资源或执行收尾工作。
throw 语句:用于手动抛出异常,可以抛出任意类型的异常。
自定义异常:通过继承 Error 类,可以创建自定义的异常类型。
try...catch...finally语句
语法:
try {
// 尝试执行的代码块
// 如果在尝试执行时发生异常,控制将立即转到catch块
} catch (error) {
// 当try块中发生异常时执行的代码块
// 可以在这里处理异常,如记录错误或执行一些清理操作
} [finally {
// 无论是否发生异常,都会执行的代码块
// 通常用于执行清理操作,如关闭文件或释放资源
}]
说明:
try 块:
包含可能抛出异常的代码。
如果发生异常,执行会立即转到catch块。
catch 块:
捕获并处理try块中抛出的异常。
error参数包含异常信息。
catch块是可选的,但如果没有catch,则必须有finally。
finally 块:
finally块是可选的。
无论是否发生异常都会执行。
通常用于清理资源。
throw 语句
throw 语句用于手动抛出异常,可以抛出任意类型的异常(如字符串、数字、对象等)。
基本语法:
throw expression;
throw 可以在任何地方使用,但通常建议将可能抛出异常的代码包裹在 try-catch 块中,以便适当处理异常。其中,expression 可以是任何类型的值,例如:
字符串: 用于描述错误信息。
数字: 用于表示错误代码。
对象: 用于提供更详细的错误信息,例如错误类型、错误位置等。
Error 对象: JavaScript 内置的 Error 对象,可以用于创建自定义错误类型。
示例:
function divide(a, b) {if (b === 0) {throw new Error("除数不能为零");}return a / b;
}try {console.log(divide(10, 0));
} catch (error) {console.log("捕获到错误:", error.message);
}
下面给出几个例子。
例1:限制HTML5输入框,限制输入 0 到 100 之间的正整数(不能带小数)。
使用try-catch,源码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>整数输入验证</title>
</head>
<body><h1>整数输入验证(实时,使用try-catch)</h1><label for="integerInput">请输入一个 0 到 100 之间的正整数(不能带小数):</label><input type="text" id="integerInput"><p id="integerError"></p><script>function validateInteger() {const input = document.getElementById('integerInput');const error = document.getElementById('integerError');const value = input.value.trim();try {if (value === '') throw new Error("请输入一个数值");// 检查是否只包含数字for (let i = 0; i < value.length; i++) {if (value[i] < '0' || value[i] > '9') {throw new Error("输入的不是正整数,请重新输入");}}const n = parseInt(value, 10);// 检查是否为整数if (n.toString() !== value) throw new Error("输入的不是正整数,请重新输入");// 检查范围if (n < 0 || n > 100) throw new Error("输入的正整数不在 0 到 100 之间,请重新输入");error.textContent = "输入正确";error.style.color = "green";} catch (e) {error.textContent = e.message;error.style.color = "red";}}document.getElementById('integerInput').addEventListener('input', validateInteger);</script>
</body>
</html>
例2:限制HTML5输入框,请输入一个 0 到 100 之间的数值(可带小数)。
使用try-catch,源码如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>浮点数输入验证</title>
</head>
<body><h1>浮点数输入验证(实时,使用try-catch)</h1><label for="floatInput">请输入一个 0 到 100 之间的数值(可带小数):</label><input type="text" id="floatInput"><p id="floatError"></p><script>function validateFloat() {const input = document.getElementById('floatInput');const error = document.getElementById('floatError');const value = input.value.trim();try {if (value === '') throw new Error("请输入一个数值");// 检查是否为有效数值格式let dotCount = 0;let isNegative = false;for (let i = 0; i < value.length; i++) {if (i === 0 && value[i] === '-') {isNegative = true;continue;}if (value[i] === '.') {dotCount++;if (dotCount > 1) throw new Error("输入的不是有效的数值格式,请重新输入");continue;}if (value[i] < '0' || value[i] > '9') {throw new Error("输入的不是有效的数值格式,请重新输入");}}const num = parseFloat(value);if (isNaN(num)) throw new Error("输入的不是有效的数值格式,请重新输入");// 检查范围if (num < 0 || num > 100) throw new Error("输入的数值不在 0 到 100 之间,请重新输入");error.textContent = "输入正确";error.style.color = "green";} catch (e) {error.textContent = e.message;error.style.color = "red";}}document.getElementById('floatInput').addEventListener('input', validateFloat);</script>
</body>
</html>
自定义异常
通过创建自定义错误类,可以更具体地描述异常情况。所有自定义异常类应该继承自 Error 类。
示例:
class CustomError extends Error {constructor(message) {super(message);this.name = "CustomError";// 可以添加自定义属性this.customProperty = "some value";}
}try {throw new CustomError("这是一个自定义错误");
} catch (error) {console.log(error.name); // 输出: CustomErrorconsole.log(error.message); // 输出: 这是一个自定义错误console.log(error.customProperty); // 输出: some value
}
在 ES6 及以后的版本中,自定义异常通常是通过创建类来实现的,这是最常见和推荐的方式。
附录
JavaScript异常处理和调试 JavaScript异常处理和调试_js catch 异常栈-CSDN博客
流程控制与错误处理 - JavaScript | MDN (mozilla.org)
相关文章:

JavaScript青少年简明教程:异常处理
JavaScript青少年简明教程:异常处理 在 JavaScript 中,异常指的是程序执行过程中出现的错误或异常情况。这些错误可能导致程序无法正常执行,甚至崩溃。ECMA-262规范了多种JavaScript错误类型,这些类型都继承自Error基类。主要的错…...

科普文:Lombok使用及工作原理详解
1. 概叙 Lombok是什么? Project Lombok 是一个 JAVA 库,它可以自动插入编辑器和构建工具,为您的 JAVA 锦上添花。再也不要写另一个 getter/setter 或 equals 等方法,只要有一个注注解,你的类就有一个功能齐全的生成器…...

飞致云开源社区月度动态报告(2024年7月)
自2023年6月起,中国领先的开源软件公司FIT2CLOUD飞致云以月度为单位发布《飞致云开源社区月度动态报告》,旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况,以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源大屏…...

mybatis-plus——实现动态字段排序,根据实体获取字段映射数据库的具体字段
前言 前端需要根据表头的点击控件可以排序,虽然前端能根据当前页的数据进行对应字段的排序,但也仅局限于实现当前页的排序,无法满足全部数据的排序,所以需要走接口的查询进行排序,获取最全的排序数据 实现方案 前端…...

redis:Linux安装redis,redis常用的数据类型及相关命令
1. 什么是NoSQL nosql[not only sql]不仅仅是sql。所有非关系型数据库的统称。除去关系型数据库之外的都是非关系数据库。 1.1为什么使用NoSQL NoSQL数据库相较于传统关系型数据库具有灵活性、可扩展性和高性能等优势,适合处理非结构化和半结构化数据,…...

JavaScript 和 HTML5 Canvas实现图像绘制与处理
前言 JavaScript 和 HTML5 的 canvas 元素提供了强大的图形和图像处理功能,使得开发者能够在网页上创建动态和交互式的视觉体验。这里我们将探讨如何使用 canvas 和 JavaScript 来处理图像加载,并在其上进行图像绘制。我们将实现一个简单的示例…...

Java之Java基础二十(集合[上])
Java 集合框架可以分为两条大的支线: ①、Collection,主要由 List、Set、Queue 组成: List 代表有序、可重复的集合,典型代表就是封装了动态数组的 ArrayList 和封装了链表的 LinkedList;Set 代表无序、不可重复的集…...

【C++BFS】1162. 地图分析
本文涉及知识点 CBFS算法 LeetCode1162. 地图分析 你现在手里有一份大小为 n x n 的 网格 grid,上面的每个 单元格 都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地。 请你找出一个海洋单元格,这个海洋单元格到离它最近的陆地单元格的距…...

实战:安装ElasticSearch 和常用操作命令
概叙 科普文:深入理解ElasticSearch体系结构-CSDN博客 Elasticsearch各版本比较 ElasticSearch 单点安装 1 创建普通用户 #1 创建普通用户名,密码 [roothlink1 lyz]# useradd lyz [roothlink1 lyz]# passwd lyz#2 然后 关闭xshell 重新登录 ip 地址…...

React-Native 宝藏库大揭秘:精选开源项目与实战代码解析
1. 引言 1.1 React-Native 简介 React-Native 是由 Facebook 开发的一个开源框架,它允许开发者使用 JavaScript 和 React 的编程模型来构建跨平台的移动应用。React-Native 的核心理念是“Learn Once, Write Anywhere”,即学习一次 React 的编程模型&am…...

数据结构:二叉树(链式结构)
文章目录 1. 二叉树的链式结构2. 二叉树的创建和实现相关功能2.1 创建二叉树2.2 二叉树的前,中,后序遍历2.2.1 前序遍历2.2.2 中序遍历2.2.3 后序遍历 2.3 二叉树节点个数2.4 二叉树叶子结点个数2.5 二叉树第k层结点个数2.6 二叉树的深度/高度2.7 二叉树…...

召唤生命,阻止轻生——《生命门外》
本书的目的,就是阻止自杀!拉回那些深陷在这样的思维当中正在挣扎犹豫的人,提醒他们珍爱生命,让更多的人,尤其是年轻人从执迷不悟的犹豫徘徊中幡然醒悟,回归正常的生活。 网络上抱孩子跳桥轻生的母亲&#…...

JVM:栈上的数据存储
文章目录 一、Java虚拟机中的基本数据类型 一、Java虚拟机中的基本数据类型 在Java中有8大基本数据类型: 这里的内存占用,指的是堆上或者数组中内存分配的空间大小,栈上的实现更加复杂。 Java中的8大数据类型在虚拟机中的实现:…...

C#实战 - C#实现发送邮件的三种方法
作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言! 前言 当使用 C# 编程…...

数模原理精解【5】
文章目录 二元分布满足要求边际分布条件概率例子1例子2 损失函数概率分布期望值例 参考文献 二元分布 满足要求 连续情况下, φ ( x , y ) \varphi (x,y) φ(x,y)为随机变量 X 、 Y X、Y X、Y的联合概率分布(二元分布),如果以下条件满足: …...

C语言篇——使用运算符将16进制数据反转
比如:将一个16进制0xFD,即11111101,反向,输出10111111,即0xBF。 #include <stdio.h>unsigned char reverseBits(unsigned char num) {unsigned char reverse_num 0;int i;for (i 0; i < 8; i) {if ((num &…...

2025年和2024CFA一级SchweserKaplan Notes 全集 (内附分享链接)
CFA一级notes百度网盘下载 2024年和2025年 CFA一级考纲已经正式发布,相比与老考纲,新考纲变化实在不算小。 2024年和2025年 CFA一级notes完整版全 https://drive.uc.cn/s/6394c0b6b1a54?public1 2024年和2025年 cfa二级notes完整版全 https://driv…...

B树的实现:代码示例与解析
B树的实现:代码示例与解析 引言 B树是一种自平衡的树数据结构,广泛应用于文件系统和数据库系统中。它是一种多路搜索树,旨在保持数据有序并允许高效的查找、插入和删除操作。本文将深入探讨B树的实现,提供完整的代码示例和详细的…...

HCIA总结
一、情景再现:ISP网络为学校提供了DNS服务,所以,DNS服务器驻留在ISP网络内,而不再学校网络内。DHCP服务器运行在学校网络的路由器上 小明拿了一台电脑,通过网线,接入到校园网内部。其目的是为了访问谷歌网站…...

软件测试_接口测试面试题
接口测试是软件测试中的重要环节,它主要验证系统不同模块之间的通信和数据交互是否正常。在软件开发过程中,各个模块之间的接口是实现功能的关键要素,因此对接口进行全面而准确的测试是确保系统稳定性和可靠性的关键步骤。 接口测试的核心目…...

C++初阶学习第五弹——类与对象(下)
类与对象(上):C初阶学习第三弹——类与对象(上)-CSDN博客 类和对象(中):C初阶学习第四弹——类与对象(中)-CSDN博客 一.赋值运算符重载 1.1 运算符重载 C为…...

最低工资标准数据(2001-2023年不等)、省市县,整理好的面板数据(excel格式)
时间范围:2001-2022年 具体内容:一:最低工资数据标准时间:2012-2021包含指标: 省份城市/区县小时最低工资标准(非全日制)月最低工资标准实施日期 样例数据: 二:各省最低…...

计算机毕业设计选题推荐-戏曲文化体验系统-Java/Python项目实战
✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

【深度学习】CosyVoice,论文
CosyVoice_v1.pdf 文章目录 CosyVoice: A Scalable Multilingual Zero-shot Text-to-speech Synthesizer based on Supervised Semantic Tokens摘要1 引言2 CosyVoice: 使用监督语义标记的可扩展TTS模型2.1 用于语音的监督语义标记2.2 用于TTS的大型语言模型2.3 最优传输条件流…...

PHP8.3.9安装记录,Phpmyadmin访问提示缺少mysqli
ubuntu 22.0.4 腾讯云主机 下载好依赖 sudo apt update sudo apt install -y build-essential libxml2-dev libssl-dev libcurl4-openssl-dev pkg-config libbz2-dev libreadline-dev libicu-dev libsqlite3-dev libwebp-dev 下载php8.3.9安装包 nullhttps://www.php.net/d…...

[译] 深入浅出Rust基金会
本篇是对 RustConf 2023中的Rust Foundation: Demystified这一视频的翻译与整理, 过程中为符合中文惯用表达有适当删改, 版权归原作者所有. 大家好,我是Sage Griffin,我的代词是they/them。我今天来这里是要谈谈Rust基金会。 要了解基金会实际做什么,我们需要理解美国国内税收…...

Postman:API开发与测试的强大伴侣
在当今的数字化时代,API(应用程序编程接口)已成为不同软件系统之间通信的桥梁,它们如同数字世界的“翻译官”,使得数据和服务能够在不同的平台和应用程序之间无缝流动。然而,API的开发、测试和维护并非易事…...

Web应用的视界革命:WebKit支持屏幕方向API的深度解析
Web应用的视界革命:WebKit支持屏幕方向API的深度解析 在现代Web应用开发中,屏幕方向的适应性是一个重要的考虑因素。屏幕方向API(Screen Orientation API)提供了一种方法,允许Web应用知道并响应屏幕的方向变化&#x…...

【前端】一文带你了解 CSS
文章目录 1. CSS 是什么2. CSS 引入方式2.1 内部样式2.2 外部样式2.3 内联样式 3. CSS 常见选择器3.1 基础选择器3.1.1 标签选择器3.1.2 类选择器3.1.3 id 选择器3.1.4 通配符选择器 3.2 复合选择器3.2.1 后代选择器 4. CSS 常用属性4.1 字体相关4.2 文本相关4.3 背景相关4.4 设…...

IT服务运营管理中的关键考核指标
IT服务运营过程中常见的关键考核指标体现在人员、技术、资源、过程、质量等要素中,下面把常见的考核项目、计算方式、考核周期罗列如下,本考核指标主要用于对IT服务运营单位或部门的考核。 IT服务运营管理关键考核指标 要素考核项目计算方式常见考核周期…...