尝试使用非对象设置值会抛出 TypeError。...可迭代对象中的每个值都会按照迭代顺序插入到新实例中: const val1 = { id: 1 }, val2 = { id: 2 }; const ws = new WeakSet([val1..., val2]); 只要有一个值无效就会抛出错误,导致整个初始化失败: const ws = new WeakSet([{ id: 1 }, true, { id: 2 }]); // TypeError...: WeakSet 中对对象的引用不会被考虑进垃圾回收机制,这些值不属于正式的引用,不会阻止垃圾回收,即只要没有其他的对象引用该对象,则该对象就会被回收,而不管它在不在 WeakSet 不可迭代值 因为...当然,也用不着像 clear()这样一次性销毁所有值的方法。WeakSet 确实没有这个方法。因为不可能迭代,所以也不可能在不知道对象引用的情况下从弱集合中取得值。
try catch finally语句标记要尝试的语句块,并指定一个出现异常时抛出的响应。...RangeError: 创建一个error实例,表示错误的原因:数值变量或参数超出其有效范围。 ReferenceError: 创建一个error实例,表示错误的原因:无效引用。...TypeError: 创建一个error实例,表示错误的原因:变量或参数不属于有效类型。...URIError: 创建一个error实例,表示错误的原因:给encodeURI()或decodeURl()传递的参数无效。...包含有关事件和错误的所有信息。
在我们的程序中,事情并非一帆风顺。 特别是在某些情况下,我们可能希望在停止程序或在发生不良状况时通知用户。例如: 程序试图打开一个不存在的文件。 网络连接断开。 用户进行了无效的输入。...下面的例子是当你尝试重新为 const 赋值时,将触发 TypeError: const name = "Jules"; name = "Caty"; // TypeError: Assignment...如果异常是未捕获的,也就是说程序员没有采取任何措施来捕获它,则程序将会崩溃。 你在什么时候及在什么地方捕获代码中的异常取决于特定的用例。 例如,你可能想要在栈中传播异常,使程序完全崩溃。...当发生致命的错误,需要更安全地停止程序而不是处理无效数据时,你可能需要这样做。 介绍了基础知识之后,现在让我们将注意力转向同步和异步 JavaScript 代码中的错误和异常处理。...:事件发射器 我们在 Node.js 中所做的大部分工作都是基于事件的。
在我们声明(初始化)它们之前,它们是不可访问的。 这被称为“暂时死区”。 当我们在声明变量之前尝试访问变量时,JavaScript会抛出一个ReferenceError。...静态方法仅在创建它们的构造函数中存在,并且不能传递给任何子级。 由于freddie是一个子级对象,函数不会传递,所以在freddie实例上不存在freddie方法:抛出TypeError。...事件传播的三个阶段是什么??...在事件传播期间,有三个阶段:捕获,目标和冒泡。 默认情况下,事件处理程序在冒泡阶段执行(除非您将useCapture设置为true)。 它从最深的嵌套元素向外延伸。 ---- 33....扩展运算符将迭代的每个字符映射到一个元素。
创建 可以使用 new 关键字实例化一个空的 WeakMap: const wm = new WeakMap(); 注意:弱映射中的键只能是 Object 或者继承自 Object 的类型,尝试使用非对象设置键会抛出...TypeError。...[key2, 2] ]); 注意: 只要有一个键无效就会抛出错误,导致整个初始化失败: const key1 = { id: 1 }, key2 = { id: 2 }; const wm...不可迭代键 因为 WeakMap 中的键/值对任何时候都可能被销毁,所以没必要提供迭代其键/值对的能力。当然,也用不着像 clear()这样一次性销毁所有键/值的方法。...因为不可能迭代,所以也不可能在不知道对象引用的情况下从弱映射中取得值。即便代码可以访问 WeakMap 实例,也没办法看到其中的内容。
当给定一个无效的参数,将会抛出TypeError错误....Throws: TypeError 当给定一个无效的参数,将会抛出TypeError错误....Throws: TypeError当给定一个无效的参数,将会抛出TypeError错误....Throws: TypeError 当给定一个无效的参数,将会抛出TypeError错误....Throws: TypeError 当给定一个无效的参数,将会抛出TypeError错误.
哪一个是无效的?...静态方法被设计为只能被创建它们的构造器使用(也就是 Chameleon),并且不能传递给实例。因为 freddie 是一个实例,静态方法不能被实例使用,因此抛出了 TypeError 错误。...事件传播的三个阶段是什么?...在事件传播期间,有三个阶段:捕获、目标和冒泡。默认情况下,事件处理程序在冒泡阶段执行(除非将 useCapture 设置为 true)。它从嵌套最深的元素向外传播。 ---- 33. 输出是什么?...当我们尝试调用一个不存在的函数时TypeError异常会被抛出。
错误是程序中的问题,程序将因此停止执行。另一方面,当发生一些内部事件时,会引发异常,这些事件改变了程序的正常流程。...ValueError:当使用无效的参数或输入调用函数或方法时,例如,当字符串不表示有效整数时,尝试将字符串转换为整数,则会引发此异常。...AttributeError:当在对象上找不到属性或方法时,例如尝试访问类实例的不存在的属性,则会引发此异常。...x = 5y = "hello"z = x + y输出:尝试 catch 块来解决它:代码尝试将整数 (x) 和字符串 (y) 相加,这不是有效的操作,它将引发 x y TypeError 。...然后,它捕获异常,打印“异常”,并使用raise重新引发相同的NameError异常。这演示了如何在 Python 中引发和处理异常,从而允许自定义错误消息和进一步的异常传播。
在我们声明(初始化)它们之前,它们是不可访问的。这被称为“暂时死区”。当我们在声明变量之前尝试访问变量时,JavaScript会抛出一个ReferenceError。...静态方法仅在创建它们的构造函数中存在,并且不能传递给任何子级。由于freddie是一个子级对象,函数不会传递,所以在freddie实例上不存在freddie方法:抛出TypeError。...事件传播的三个阶段是什么??...在事件传播期间,有三个阶段:捕获,目标和冒泡。默认情况下,事件处理程序在冒泡阶段执行(除非您将useCapture设置为true)。它从最深的嵌套元素向外延伸。 ---- 33....扩展运算符将迭代的每个字符映射到一个元素。
在我们声明(初始化)它们之前,它们是不可访问的。 这被称为“暂时死区”。 当我们在声明变量之前尝试访问变量时,JavaScript会抛出一个ReferenceError。...这是无效的,并将抛出Cannot read property "size" of undefined。 ---- ---- 6. 下面代码的输出是什么?...静态方法仅在创建它们的构造函数中存在,并且不能传递给任何子级。 由于freddie是一个子级对象,函数不会传递,所以在freddie实例上不存在freddie方法:抛出TypeError。...事件传播的三个阶段是什么??...在事件传播期间,有三个阶段:捕获,目标和冒泡。 默认情况下,事件处理程序在冒泡阶段执行(除非您将useCapture设置为true)。 它从最深的嵌套元素向外延伸。 ---- 33.
如果头部错误,它将把这视为一个不可恢复的问题并抛出一个 TypeError。...但是当我们尝试处理其他异步源时,比如触发事件处理程序,实现异步迭代器就变得相当困难——通常我们有一个响应事件的单个事件处理程序函数,但是迭代器的每次调用next()方法必须返回一个不同的 Promise...如果你尝试向不可扩展的对象添加新属性,就会发生这种情况(参见§14.2)。这些方法可能抛出 TypeError 的其他原因与属性本身有关。可写属性控制对值属性的更改尝试。...调用Object.defineProperty()或Object.defineProperties()尝试违反这些规则会抛出 TypeError: 如果一个对象不可扩展,你可以编辑其现有的自有属性,但不能向其添加新属性...此外,尝试更改不可扩展对象的原型(参见§14.3)将始终抛出 TypeError。 请注意,一旦将对象设置为不可扩展,就没有办法再使其可扩展。
例如: 程序试图打开一个不存在的文件 网络连接断开 用户输入了无效的内容 在所有这些情况下,我们程序员都会创建 错误,或者让编程引擎为我们创建一些错误。...当你尝试重赋值 const 时,会发生 TypeError: const name = "Jules"; name = "Caty"; // TypeError: Assignment to constant...在何时何地捕获代码中的异常取决于具体的用例。 例如,你可能想在堆栈中传播一个异常,以使程序完全崩溃。出现致命的错误时可能就会是这种情况,因为停止程序比处理无效数据更安全。...另一种方法是使用 for await...of 的 async 迭代。要使用 async 迭代,我们需要使用一个 async 函数包装这个消费者。...:事件发射器 你在 Node.js 中所做的大部分工作都是基于 事件 的。
+c) MemoryError 内存溢出(可通过删除对象释放内存) NameError 尝试访问一个不存在的变量 NotImplementedError 尚未实现的方法 OSError...RuntimeError 一般的运行时错误 StopIteration 迭代器没有更多的值 SyntaxError Python的语法错误 IndentationError ...不同类型间的无效操作 UnboundLocalError 访问一个未初始化的本地变量(NameError的子类) UnicodeError Unicode相关的错误(ValueError的子类...的子类) UnicodeTranslateError Unicode转换时的错误(UnicodeError的子类) ValueError 传入无效的参数 ZeroDivisionError ... Python 的相悖 Python: 一个问题只有一个解决办法 Perl: 一个问题不可能只有一个解决办法
对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误 UnicodeDecodeError Unicode 解码时的错误 UnicodeEncodeError...相关联的值是一个字符串,表示正确的错误。 异常StopIteration 由迭代器的next()方法引发,表明没有其他值。...唯一的例外来自继承BaseException,而不是StandardError 或Exception使得它不会意外地被映入代码捕获 Exception。这允许异常正常传播并导致解释器退出。...异常TypeError 当操作或功能应用于不适当类型的对象时提起。关联值是一个字符串,提供有关类型不匹配的详细信息。...object 编解码器正在尝试编码或解码的对象。 start 第一个无效数据索引object。 end 上次无效数据后的索引object。
内置异常基类 在 Python 中,所有异常必须为一个派生自 BaseException 的类的实例。 通过子类化创建的两个不相关异常类永远是不等效的,既使它们具有相同的名称。...LookupError 此基类用于派生当映射或序列所使用的键或索引无效时引发的异常: IndexError, KeyError 内置异常的层次结构 BaseException 所有异常的基类...+-- StopIteration 迭代器没有更多值 +-- StopAsyncIteration 必须通过异步迭代器对象的__anext__()方法引发以停止迭代 +--...连接尝试被对等方中止 | | +-- ConnectionRefusedError 连接尝试被对等方拒绝 | | +-- ConnectionResetError 连接由对等方重置...+-- TypeError 对类型无效的操作 +-- ValueError 传入无效的参数 | +-- UnicodeError Unicode 相关的错误 |
一、什么是异常处理 定义:异常处理就是我们在写Python时,经常看到的报错信息,例如;NameError TypeError ValueError等,这些都是异常。...异常是一个事件,改事件会在程序执行过程中发生,影响程序的正常执行,一般情况下,在python中无法处理程序时就会发生异常,异常时Python的一个对象,表示一个错误,当Python脚本发生异常时,我们需要捕获并处理异常...这面这个例子展示了尝试打开一个文件,然后把内容打印到屏幕上: for line in open("myfile.txt"): print(line, end="") 以上这段代码的问题是,当执行完毕后...常规错误的基类 StopIteration 迭代器没有更多的值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError 所有的内建标准异常的基类 ArithmeticError...对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误 UnicodeDecodeError Unicode 解码时的错误 UnicodeEncodeError
Python标准异常总结 AssertionError 断言语句(assert)失败 AttributeError 尝试访问未知的对象属性 EOFError 用户输入文件末尾标志EOF(Ctrl+d)...KeyError 字典中查找一个不存在的关键字 KeyboardInterrupt 用户输入中断键(Ctrl+c) MemoryError 内存溢出(可通过删除对象释放内存) NameError 尝试访问一个不存在的变量...弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象 RuntimeError 一般的运行时错误 StopIteration 迭代器没有更多的值 SyntaxError Python...不同类型间的无效操作 UnboundLocalError 访问一个未初始化的本地变量(NameError的子类) UnicodeError Unicode相关的错误(ValueError的子类) UnicodeEncodeError...Unicode转换时的错误(UnicodeError的子类) ValueError 传入无效的参数 ZeroDivisionError 除数为零 以下是 Python 内置异常类的层次结构:
知道什么是事件代理嘛?1. 简介事件流是一个事件沿着特定数据结构传播的过程。...冒泡和捕获是事件流在DOM中两种不同的传播方法事件流有三个阶段事件捕获阶段处于目标阶段事件冒泡阶段事件捕获事件捕获(event capturing):通俗的理解就是,当鼠标点击或者触发dom事件时,浏览器会从根节点开始由外到内进行事件传播...,它们都有一个共同的行为,就是事件传播图片2....事件流阻止在一些情况下需要阻止事件流的传播,阻止默认动作的发生event.preventDefault():取消事件对象的默认动作以及继续传播。...的区别preventDefault告诉浏览器不用执行与事件相关联的默认动作(如表单提交)stopPropagation是停止事件继续冒泡,但是对IE9以下的浏览器无效5.
【简 介 异 常】 异 常 是 什 么 异常是一个事件,该事件在执行过程中发生,影响了程序正常执行。异常是python对象,表示一个错误。而我们要做的事发生异常后捕获并处理它,否则程序会终止。..., 0) 自 定 义 异 常 创建一个新异类,程序命名他们自己的异常,异常应是典型的集成Exception类; 以下为与RuntimeError相关实例,实例中创建了基类RuntimeError...SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 StopIteration 迭代器没有更多的值 GeneratorExit...尚未实现的方法 SyntaxError Python 语法错误 IndentationError 缩进错误 TabError Tab 和空格混用 SystemError 一般的解释器系统错误 TypeError...对类型无效的操作 ValueError 传入无效的参数 UnicodeError Unicode 相关的错误 UnicodeDecodeError Unicode 解码时的错误 UnicodeEncodeError
领取专属 10元无门槛券
手把手带您无忧上云