前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JavaScript崩溃指南:你遇到过这些异常吗?

JavaScript崩溃指南:你遇到过这些异常吗?

原创
作者头像
zayyo
发布于 2023-11-01 12:21:56
发布于 2023-11-01 12:21:56
44300
代码可运行
举报
文章被收录于专栏:zayyo前端zayyo前端
运行总次数:0
代码可运行

今天让我们逐一详细罗列一下JavaScript的这些的错误类型,

  1. EvalError(eval错误)
    • EvalError ,通常用于表示与 eval() 函数相关的错误。eval() 函数用于在运行时执行动态生成的 JavaScript 代码。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   eval("alert('Hello, World!');");

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 EvalError: alert is not defined

}

代码语言:txt
复制
  1. RangeError(范围错误)
    • RangeError 表示一个值不在有效范围内的错误,通常涉及到数值超出了 JavaScript 的限制或范围。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const arr = new Array(Infinity);

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 RangeError: Invalid array length

}

代码语言:txt
复制
  1. ReferenceError(引用错误)
    • ReferenceError 表示尝试引用未定义的变量或对象的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   console.log(undefinedVariable);

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 ReferenceError: undefinedVariable is not defined

}

代码语言:txt
复制
  1. TypeError(类型错误)
    • TypeError 表示尝试在不支持的数据类型上执行操作或使用不允许的方法的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const number = 42;
代码语言:txt
AI代码解释
复制
   number.toUpperCase();

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 TypeError: number.toUpperCase is not a function

}

代码语言:txt
复制
  1. URIError(URI错误)
    • URIError 表示与 URI 相关的错误,通常涉及到对 URI 进行不正确的操作。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   decodeURIComponent('%');

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 URIError: URI malformed

}

代码语言:txt
复制
  1. SyntaxError(语法错误)
    • SyntaxError 表示代码包含语法错误,导致解析失败。这个错误类型通常由 JavaScript 引擎报告,WebIDL 中故意省略以保留给 ES 解析器使用。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   if (x > 10 {  // 抛出 SyntaxError: Unexpected token '{'
代码语言:txt
AI代码解释
复制
       // ...
代码语言:txt
AI代码解释
复制
   }

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e);

}

代码语言:txt
复制
  1. Error(通用错误)
    • Error 是一个通用的错误类型,通常被用于创建自定义错误对象。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   throw new Error('This is a custom error.');

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 Error: This is a custom error.

}

代码语言:txt
复制
  1. IndexSizeError(索引不在允许的范围内)
    • IndexSizeError 表示尝试使用不在允许范围内的索引值的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const arr = [1, 2, 3];
代码语言:txt
AI代码解释
复制
   const item = arr.item(10); // 抛出 IndexSizeError: Index or size is negative or greater than the allowed amount

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e);

}

代码语言:txt
复制
  1. HierarchyRequestError(节点树层次结构是不正确的)
    • HierarchyRequestError 表示尝试操作 DOM 节点树中的节点时,导致树的层次结构不正确的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const parent = document.createElement('div');
代码语言:txt
AI代码解释
复制
   const child = document.createElement('div');
代码语言:txt
AI代码解释
复制
   child.appendChild(parent); // 抛出 HierarchyRequestError: Failed to execute 'appendChild' on 'Node': The new child element contains the parent.

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e);

}

代码语言:txt
复制
  1. InvalidCharacterError(字符串包含无效字符)
    • InvalidCharacterError 表示尝试使用无效字符的字符串进行操作时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const invalidString = '\x01\x02\x03'; // 包含无效字符
代码语言:txt
AI代码解释
复制
   const element = document.createElement(invalidString); // 抛出 InvalidCharacterError: String contains an invalid character

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e);

}

代码语言:txt
复制
  1. NoModificationAllowedError(对象不能被修改)
    • NoModificationAllowedError 表示尝试修改不允许修改的对象时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const inputElement = document.createElement('input');
代码语言:txt
AI代码解释
复制
   inputElement.setAttribute('type', 'text'); // 抛出 NoModificationAllowedError: Cannot set attribute 'type' on readonly element.

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e);

}

代码语言:txt
复制
  1. NotFoundError(对象不能在这里被找到)
    • NotFoundError 表示尝试查找不存在的对象时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const element = document.querySelector('.nonexistent'); // 抛出 NotFoundError: An attempt was made to reference a Node in a context where it does not exist.

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e);

}

代码语言:txt
复制
  1. NotSupportedError(不支持的操作)
    • NotSupportedError 表示尝试执行不被当前环境或对象支持的操作时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   navigator.vibrate([200, 100, 200]); // 尝试在不支持振动的环境中执行振动操作

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 NotSupportedError: Vibration API is not supported in this environment.

}

代码语言:txt
复制
  1. InvalidStateError(对象是一个无效的状态)
    • InvalidStateError 表示尝试在对象处于无效状态时执行操作的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const audioElement = document.createElement('audio');
代码语言:txt
AI代码解释
复制
   audioElement.play(); // 尝试在未加载音频的情况下播放音频

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 InvalidStateError: play() can only be initiated by a user gesture.

}

代码语言:txt
复制
  1. SyntaxError(字符串不匹配预期的模式)
    • SyntaxError 表示尝试使用不符合预期模式的字符串时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   JSON.parse("{'name': 'John'}"); // 使用单引号而不是双引号包围属性名

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 SyntaxError: Unexpected token ' in JSON at position 2

}

代码语言:txt
复制
  1. InvalidModificationError(对象不能以这种方式被修改)
    • InvalidModificationError 表示尝试以不允许的方式修改对象时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const inputElement = document.createElement('input');
代码语言:txt
AI代码解释
复制
   inputElement.setAttribute('type', 'password'); // 尝试修改已创建的 input 元素的 type 属性

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 InvalidModificationError: Cannot set attribute 'type' on readonly element.

}

代码语言:txt
复制
  1. NamespaceError(操作在 XML 命名空间内不被允许)
    • NamespaceError 表示尝试在 XML 命名空间内执行不允许的操作时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const xmlDocument = new DOMParser().parseFromString("<book></book>", "text/xml");
代码语言:txt
AI代码解释
复制
   const element = xmlDocument.createElement("author"); // 尝试在 XML 命名空间中创建元素

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 NamespaceError: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.

}

代码语言:txt
复制
  1. InvalidAccessError(对象不支持这种操作或参数)
    • InvalidAccessError 表示尝试使用不支持的操作或参数访问对象时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const canvas = document.createElement('canvas');
代码语言:txt
AI代码解释
复制
   canvas.getContext('webgl', { antialias: true }); // 尝试在不支持抗锯齿的情况下请求 WebGL 上下文

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 InvalidAccessError: Option 'antialias' is not supported by this context.

}

代码语言:txt
复制
  1. TypeMismatchError(对象的类型不匹配预期的类型)
    • TypeMismatchError 表示尝试将对象分配给不兼容的类型或参数时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const inputElement = document.createElement('input');
代码语言:txt
AI代码解释
复制
   inputElement.value = {}; // 尝试将对象分配给 input 元素的 value 属性

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 TypeMismatchError: The provided value is not a string.

}

代码语言:txt
复制
  1. SecurityError(此操作是不安全的)
    • SecurityError 表示尝试执行被浏览器安全策略限制的不安全操作时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const iframe = document.createElement('iframe');
代码语言:txt
AI代码解释
复制
   iframe.src = 'http://example.com'; // 尝试加载不安全的外部资源

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 SecurityError: Blocked a frame with origin "null" from accessing a cross-origin frame.

}

代码语言:txt
复制
  1. NetworkError(发生网络错误)
    • NetworkError 表示尝试执行网络请求或操作时发生的网络相关错误。
代码语言:javascript
代码运行次数:0
运行
复制

const xhr = new XMLHttpRequest();

xhr.open('GET', 'http://example.com/api/data', true);

xhr.send();

xhr.onerror = function () {

代码语言:txt
AI代码解释
复制
   console.error('NetworkError:', xhr.statusText); // 抛出 NetworkError: Failed to load

};

代码语言:txt
复制
  1. AbortError(操作被中止)
    • AbortError 表示尝试中止正在进行的操作时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

const xhr = new XMLHttpRequest();

xhr.open('GET', 'http://example.com/api/data', true);

xhr.send();

xhr.abort();

xhr.onerror = function () {

代码语言:txt
AI代码解释
复制
   console.error('AbortError:', xhr.statusText); // 抛出 AbortError: The operation was aborted.

};

代码语言:txt
复制
  1. URLMismatchError(给定的 URL 不匹配另一个 URL)
    • URLMismatchError 表示尝试将一个 URL 与另一个 URL 进行比较,但它们不匹配时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

const url1 = new URL('http://example.com');

const url2 = new URL('http://example.org');

if (url1.href !== url2.href) {

代码语言:txt
AI代码解释
复制
   console.error('URLMismatchError: URLs do not match.'); // 抛出 URLMismatchError

}

代码语言:txt
复制
  1. QuotaExceededError(已经超过给定配额)
    • QuotaExceededError 表示尝试在已达到或超过了指定配额时执行某些操作的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   localStorage.setItem('key', 'value'); // 尝试存储数据,但已达到本地存储的容量配额

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 QuotaExceededError: The quota has been exceeded.

}

代码语言:txt
复制
  1. TimeoutError(操作超时)
    • TimeoutError 表示尝试执行的操作在超过指定的时间限制后仍未完成的错误。
代码语言:javascript
代码运行次数:0
运行
复制

const xhr = new XMLHttpRequest();

xhr.open('GET', 'http://example.com/api/slow', true);

xhr.timeout = 5000; // 设置超时时间为5秒

xhr.ontimeout = function () {

代码语言:txt
AI代码解释
复制
   console.error('TimeoutError: The operation timed out.'); // 抛出 TimeoutError

};

xhr.send();

代码语言:txt
复制
  1. InvalidNodeTypeError(这个操作的节点或节点祖先是不正确的)
    • InvalidNodeTypeError 表示尝试执行操作的节点或节点祖先类型不正确的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const textNode = document.createTextNode('Text');
代码语言:txt
AI代码解释
复制
   textNode.appendChild(document.createElement('div')); // 尝试在文本节点上附加元素

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 InvalidNodeTypeError: Node cannot have children of type ELEMENT.

}

代码语言:txt
复制
  1. DataCloneError(对象不能克隆)
    • DataCloneError 表示尝试克隆对象失败的错误,通常在 Web Workers 等环境中使用。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const worker = new Worker('worker.js');
代码语言:txt
AI代码解释
复制
   worker.postMessage({ complexObject: new Int32Array(10) }, [new Int32Array(10).buffer]); // 尝试传递不可克隆的对象

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 DataCloneError: The object could not be cloned.

}

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Vue 前端通过 Get 和 Post 方法调用后台接口下载文件的实现方式及方法集合
下面是整合后的技术方案与应用实例,主要围绕Vue调用下载接口并实现文件下载功能展开。
用户2102001
2025/05/19
3020
Vue 前端通过 Get 和 Post 方法调用后台接口下载文件的实现方式及方法集合
关于 JavaScript 错误处理的最完整指南(上半部)
我们的开发过程中并不总是一帆风顺。特别是在某些情况下,我们可能希望停止程序或在发生不良情况时通知用户。
前端小智@大迁世界
2020/09/17
1.8K0
熬夜7天,我总结了JavaScript与ES的25个重要知识点!
说起JavaScript,大家都知道是一门脚本语言。那么ES是什么鬼呢?ES全称ECMAScript ,是JavaScript语言的国际标准。
达达前端
2020/09/17
1.8K0
熬夜7天,我总结了JavaScript与ES的25个重要知识点!
前端错误捕获方案总结
本文主要摘抄自:https://juejin.cn/post/7172072612430872584#heading-10,主要用来记录和学习,也推荐大家看看原博主的文章。
蓓蕾心晴
2022/12/30
1.7K0
前端错误捕获方案总结
JavaScript 常见面试题分析(四)
2xx - 表示成功处理信息,如 200 - 成功处理请求,204 - 成功处理请求但没有返回内容
Nian糕
2022/12/29
2680
快来领取,33个常用JavaScript功能已封装成方法,拿来即用
在实际开发中,为了提高开发的效率,我们会把常用到的功能封装成方法,这样后期开发需要,拿来即用。
艾编程
2022/12/04
2.8K0
快来领取,33个常用JavaScript功能已封装成方法,拿来即用
javascript错误处理与调试
在程序开发中难免会遇到一些错误,在成千上万的代码中去寻找错误很明显相当于大海捞针,为此,每种计算机编程语言都要它独特的一套错误处理与调试机制。当然,JavaScript也不例外。
张哥编程
2024/12/19
1910
javascript错误处理与调试
【建议】记录一次BAT一线互联网公司前端JavaScript面试
你需要一些HTML和css的基础知识,掌握JavaScript和ES6的基本语法,对事物的好奇心。
达达前端
2022/04/13
1.7K0
【建议】记录一次BAT一线互联网公司前端JavaScript面试
如何优雅处理前端异常?
对于 JS 而言,我们面对的仅仅只是异常,异常的出现不会直接导致 JS 引擎崩溃,最多只会使当前执行的任务终止。
grain先森
2019/03/29
2.2K0
如何优雅处理前端异常?
JavaScript的异步操作(Promise)
不同于传统的回调, then 关联的函数,会在异步操作完成后执行;如果有多个 then,那么也会依次调用,除非其中有调用 reject 跳转到 catch 。
Learn-anything.cn
2021/12/17
1.4K0
你需要了解的几种 JavaScript 异常类型
无论是浏览器控制台还是 Node.js 的服务端,我们会在各种地方看到 JavaScript 异常,异常处理是编写程序必备的基础能力,在学习异常处理之前,了解 JavaScript 中的几种异常类型是非常有必要的。
ConardLi
2020/10/30
2K0
你需要了解的几种 JavaScript 异常类型
JavaScript 错误处理大全【建议收藏】
在所有的这些情况下,我们作为程序员都会产生错误,或者让编程引擎为我们创建一些错误。
疯狂的技术宅
2020/09/01
6.6K0
JavaScript 错误处理大全【建议收藏】
常用的前端JavaScript方法封装
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157261.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/15
8900
掌握JavaScript的异步编程,让你的代码更高效
在JavaScript中,异步编程是一种让应用程序在执行任务时不会阻塞主线程的编程范式。这意味着你的程序在等待长时间运行或外部操作完成的同时,仍然可以继续响应用户的交互并执行其他代码。这样做可以提高程序的响应速度和效率,尤其是在依赖大量网络请求、文件读写和用户交互的Web应用中,异步编程显得尤为重要。
前端达人
2024/11/25
2680
掌握JavaScript的异步编程,让你的代码更高效
RealWorldCtf2023-The_cult_of_8_bit详解
https://developer.mozilla.org/zh-CN/docs/Web/Security/Same-origin_policy
pankas
2023/01/16
6900
一篇文章带你了解JavaScript错误处理
执行JavaScript代码时,可能会发生意想不到的错误。错误可以是程序员编写的编码错误,由于输入错误引起的错误以及其他不可预见的事情。
前端进阶者
2021/05/17
9590
一篇文章带你了解JavaScript错误处理
JavaScript | 笔记
Element.replaceWith()的签名接受数量可变的Node或DOMString参数。。。
yiyun
2022/04/01
1.5K0
JavaScript | 笔记
【JS】1688- 重学 JavaScript API - Fetch API
Fetch API[1] 是一种现代的 JavaScript API,用于进行「网络请求」。它提供了一种更简洁、灵活的方式来发送和接收数据,并取代了传统的 XMLHttpRequest[2]。Fetch API 使用 Promise 对象处理异步操作,使得处理网络请求变得更加直观和易用。
pingan8787
2023/09/01
5430
【JS】1688- 重学 JavaScript API - Fetch API
try..catch 不能捕获的错误有哪些?注意事项又有哪些?
在 JS 中处理错误,我们主要使用try、catch、finally和throw关键字。
前端小智@大迁世界
2021/01/06
2.9K0
一文详聊前端异常原理
随着近年来前端监控体系建设日益完善,前端工程师对异常更加关注。业界关于 JS 异常介绍大多只谈了异常的捕获方法,对产生的原因和处理办法谈的较少。本文将详细的阐述异常原理,把笔者近 2 年在前端监控领域中与异常打交道的经验分享给大家。
coder_koala
2022/11/28
1.6K0
一文详聊前端异常原理
相关推荐
Vue 前端通过 Get 和 Post 方法调用后台接口下载文件的实现方式及方法集合
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档