JS 常见报错及异常处理办法总结

文章目录

  • JS 常见报错及异常处理办法总结
    • 常见js报错类型
    • 异常调试及捕获

JS 常见报错及异常处理办法总结

参考资料:https://cloud.tencent.com/developer/article/1768989

常见js报错类型

  • RangeError
  • ReferenceError
  • SyntaxError
  • TypeError

RangeError

(范围错误)是一个编程术语,通常用于描述在编程中涉及范围或边界的错误或异常情况。它表示你试图访问一个数据结构中超出有效范围或界限的索引或值,或者在执行某些操作时得到的值超过了特定数据类型允许的范围。这个错误通常出现在编程语言中,用于指示代码中的问题。

具体来说,“RangeError” 可能涉及以下方面:

  • 数组索引越界:最常见的情况之一是尝试访问数组或列表中的元素,但使用了一个不存在的索引或索引超出了数组的大小。
  • 数值溢出:在数值计算中,有时会发生数值溢出,即计算结果超过了特定数值类型的范围。
  • 递归溢出:在递归函数中,如果递归调用的次数太多,可能会导致栈溢出,这也可以被称为范围错误。
  • 数据类型限制:某些数据类型(例如整数、浮点数)有特定的取值范围,如果超出这些范围,就可能触发范围错误。

ReferenceError

(引用错误)是一个编程术语,通常用于描述在编程中尝试引用一个不存在的变量或标识符时产生的错误。这意味着代码尝试使用未定义的变量、函数或对象属性,从而无法找到所引用的标识符。

当编程语言解释器或执行引擎执行代码时,如果发现一个标识符未在当前作用域中声明或定义,它将引发 “ReferenceError”。这通常是由以下几种情况引起的:

  • 变量未声明:尝试使用未声明的变量。
  • 函数未定义:尝试调用未定义的函数。
  • 对象属性未定义:尝试访问对象的属性,但该属性未定义。
  • 作用域问题:尝试访问在当前作用域之外声明的变量。

要解决 “ReferenceError”,你需要确保引用的变量、函数或属性在当前作用域中已经声明或定义。这通常涉及到在正确的位置声明变量,定义函数,或确保对象属性存在。

注意:虽然不同的编程语言可能使用不同的错误名称,但"ReferenceError"通常表示一种通用的错误类型,表示程序在运行时无法解析或找到所引用的标识符。

SyntaxError

(语法错误)是编程中的一种常见错误类型,它发生在程序代码中存在语法规则不符合语言规范的地方。这意味着编译器或解释器无法正确解析或理解代码的结构,因为它违反了编程语言的语法规则。

语法错误通常是最基本的错误之一,因为编程语言需要精确的语法来正确解释和执行代码。这些错误通常在编译代码或运行代码之前被检测到,因为它们涉及到语言的语法规则。

TypeError

(类型错误)是编程中的一个错误类型,通常指示一个操作或函数调用涉及到不兼容的数据类型。当编程语言在运行时无法执行某个操作,因为操作的数据类型不符合预期时,就会引发 TypeError。这种错误通常表示代码尝试执行一个不允许的操作或调用函数的方式是错误的。

以下是一些可能引发 TypeError 的情况:

  • 类型不匹配:在某些情况下,代码可能要求使用特定数据类型,如果提供了不匹配的数据类型,就会引发 TypeError。
  • 属性或方法不存在:尝试访问对象的属性或调用对象的方法,但该属性或方法不存在。
  • 不支持的操作:某些操作只能应用于特定类型的数据,如果尝试对不支持的数据类型执行操作,就会引发 TypeError。
  • 缺少参数:尝试调用函数时,如果未提供所需的参数,可能会引发 TypeError。
  • 迭代不可迭代对象:在某些编程语言中,尝试对不可迭代的对象执行迭代操作可能导致 TypeError。

要解决 TypeError,需要查找引发错误的代码行,并确保在执行操作之前检查数据类型或确保调用的函数与数据类型兼容。在大多数编程语言中,类型检查和异常处理机制可帮助识别和处理 TypeError。如果你使用的是强类型语言,编译器通常会在编译时检测到这些错误,而在弱类型语言中,这些错误通常在运行时才会被检测到。

异常调试及捕获

try/catch,Js中处理异常的一种模式,try用于可能会发生错误的代码,catch对错误的处理。

try{// 可能会导致错误的代码
}catch(error) {// 错误处理
}

实例:

try{console.log(a)
}catch(error) { // 打印错误信息throw new Error('变量a未命名!!'); // 自定义报错console.log(error)  // ReferenceError: a is not defined
}

throw,用来抛出一个用户自定义的异常,执行将被停止。

function getUserName(name) {if(!name) throw new Error('用户名无效');return name;
}
getUserName()

Promise 的异常处理,Promise执行中,本身自带try...catch的异常处理,出错时,将错误Rejact函数。

new Promise((resolve, reject) => {throw new Error('error!');
}).catch(alert);

console.log() 方法,在浏览器中,使用console.log打印JavaScript的值。

let value = '你最棒了,点个赞呗!'
console.log(value)

debugger 断点调试,用于停止执行 JavaScript,并调用调试函数。

let value = 15;
debugger
document.querySelector('body').innerhtml = '你最棒了,点个赞呗!'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/78573.shtml

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

相关文章

Solidity 小白教程:15. 异常

Solidity 小白教程:15. 异常 这一讲,我们介绍solidity三种抛出异常的方法:error,require和assert,并比较三种方法的gas消耗。 异常 写智能合约经常会出bug,solidity中的异常命令帮助我们debug。 Error …

PBI 背景全屏规律呈现水印

想要在Power BI报表中实现全屏规律呈现斜角水印的效果,并且显示的值是用户登录的email的话,目前Power BI desktop的背景“Background”功能中暂时没有支持的直接设置方法。但是基于测试和研究,Power BI市场中有一个叫“HTML Content”的custom visual提供,它支持嵌入一些HT…

QT实战之翻金币游戏【详细过程及介绍】

目录 前言 一、游戏整体分析 二、创建项目 三、添加资源 四、主界面实现 1、设置游戏主场景基本配置 2、设置背景图片 3、创建开始按钮并设置动画 4、创建关卡选择界面并实现主界面与其的切换 五、关卡选择界面实现 1、设置关卡选择场景基本配置 2、设置关卡选择场…

c++day7---9.14

思维导图&#xff1a; #include <iostream> using namespace std;template<typename T> class myVector { private:T* arr;size_t size; //元素数量size_t max_size; //数组容量 public://构造函数myVector() :arr(nullptr), size(0), max_size(0) {}myVector(i…

JenniAI:基于AI的文章生成器写作助手

【产品介绍】 • 名称 JenniAI • 成立/上线时间 2022年 • 具体描述 Jenni AI是一个基于AI的文章写作助手&#xff0c;通过使用先进的人工智能技术帮助用户更快、更好、更有创意地写作。无论用户需要写一篇论文、一篇博客、一封邮件、…

mysql的分组group by

文章目录 一、介绍1、分组查询的内容2、多字段分组3、将查询内容连接group_concat4、有条件的分组查询having 一、介绍 将某个字段的相同值分为一组&#xff0c;分组查询的结果强调的是一个整体&#xff0c;每组内容只显示一行分组查询的内容一般要查询分组字段&#xff0c;因…

virtualbox虚拟机中安装FreeDOS系统和DJGPP编译环境

一、安装FreeDOS系统 1、从官网下载FreeDOS系统镜像&#xff0c;下载的压缩包中包含两个文件&#xff1a;后缀为.iso和.img的镜像 ​​​下载页面 http://www.freedos.org/download/ 直接下载链接 https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.…

软件架构设计(十三) 构件与中间件技术

中间件的定义 其实中间件是属于构件的一种。是一种独立的系统软件或服务程序,可以帮助分布式应用软件在不同技术之间共享资源。 我们把它定性为一类系统软件,比如我们常说的消息中间件,数据库中间件等等都是中间件的一种体现。一般情况都是给应用系统提供服务,而不是直接…

vue-自适应布局-postcss-pxtorem

原理&#xff1a; 比如一个375px设计稿 其中一个320px宽度的元素 如何实现自适应布局呢&#xff1f; 其实可以这样理解&#xff1a; 我们先计算出375屏幕时候320px的大小&#xff0c;在屏幕变化时候&#xff0c;这些元素都会等比例缩放 比如屏幕从375 变为750px时候&#xff0…

行业追踪,2023-09-14

自动复盘 2023-09-14 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

http实现文件分片下载

文章目录 检测是否支持HTTP Range 语法Range请求cURL示例单一范围多重范围条件式分片请求 Range分片请求的响应文件整体下载文件分片下载文本下载图片下载封装下载方法 HTTP分片异步下载是一种下载文件的技术&#xff0c;它允许将一个大文件分成多个小块&#xff08;分片&#…

[重磅来袭] 功能强大的开源数据中台系统 DataCap 1.14.0 发布

推荐一套基于 SpringBoot 开发的简单、易用的开源权限管理平台&#xff0c;建议下载使用: https://github.com/devlive-community/authx 推荐一套为 Java 开发人员提供方便易用的 SDK 来与 OpenAI 的 API 进行交互组件&#xff1a;https://github.com/devlive-community/openai…

【黄色手套22】1话:基本数据类型

目录 前提补充&#xff1a; first : second&#xff1a; 基本数据类型: 整型: 字符型 &#xff1a; ASCII 码表 : 浮点型&#xff1a; 格式占位符 &#xff1a; 字符型数据的输入输出: 字符输入函数&#xff1a; getchar()&#xff1b;//单个字符 gets()&#xff1b;//…

prompt 视频收集

1.ChatGPT Prompt提示词工程 ***** 常用技巧 &#xff08;基本原则&#xff0c;格式&#xff0c;角色扮演&#xff09;_哔哩哔哩_bilibili

C生万物之函数

前言&#xff1a; &#x1f4d5;作者简介&#xff1a;热爱编程的小七&#xff0c;致力于C、Java、Python等多编程语言&#xff0c;热爱编程和长板的运动少年&#xff01; &#x1f4d8;相关专栏Java基础语法&#xff0c;JavaEE初阶&#xff0c;数据库&#xff0c;数据结构和算法…

Redis Cluster集群运维与核心原理剖析

Redis集群方案比较 哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态&#xff0c;如果master节点异常&#xff0c;则会做主从切换&#xff0c;将某一台slave作为master&#xff0c;哨兵的配置略微复杂&#xff0c;并且性能和高可用性…

Sentinel控制台配置 持久化到nacos

sentinel控制台&#xff0c;使用方便&#xff0c;功能强大。使用官方的jar包&#xff0c;配置不会持久化&#xff0c;sentinel重启后会导致&#xff0c;之前的规则全部丢失&#xff0c;下面一起改造源码实现规则数据的持久化 sentinel源码地址 &#xff08;github访问太慢&am…

git-命令行显示当前目录分支

1. 打开家目录.bashrc隐藏文件&#xff0c;找到如下内容 forlinxubuntu:~$ vi ~/.bashrcif [ "$color_prompt" yes ]; thenPS1${debian_chroot:($debian_chroot)}\[\033[01;32m\]\u\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ elsePS1${debian_chroot:($debi…

Maintaining leader role through timed lease mechanism

Continuous understanding of distributed systems design On the one hand 基于定时的租约机制来保持leader角色 基于定时的租约机制来保持leader角色的设计思想是一种在分布式系统中确保高可用性和系统一致性的解决方法。 在分布式系统中&#xff0c;通常会有一个角色被选举…

Python 文件和正则表达式

文章目录 Python 文件和正则表达式文件打开文件读取文件直接读取 read()&#xff1a;逐行读取采用 **for** 循环&#xff1a;采用 readlines()&#xff1a; 正则表达式匹配规则re 模块match 方法&#xff1a;search 方法group 方法split 方法 Python 文件和正则表达式 文件 打…