Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

js 内置错误类型 #53

Open
nmsn opened this issue Oct 27, 2022 · 0 comments
Open

js 内置错误类型 #53

nmsn opened this issue Oct 27, 2022 · 0 comments

Comments

@nmsn
Copy link
Owner

nmsn commented Oct 27, 2022

常见错误类型

ReferenceError 引用错误

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RangeError

ReferenceError (引用错误)对象代表当一个不存在(或尚未初始化)的变量被引用时发生的错误

console.log(a); // a 未定义

TypeError 类型错误

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypeError

TypeError(类型错误)对象通常(但并不只是)用来表示值的类型非预期类型时发生的错误

TypeError 在 JavaScript 中很常见,主要发生变量在运行时的访问不是预期类型,或者访问不存在的方法时,尤其是在使用类型特定的操作而变量类型不对时

以下情况会抛出 TypeError

  • 传递给运算符的操作或传递给函数的参数与预期的类型不兼容
  • 尝试修改无法更改的值
  • 尝试以不适当的方法使用一个值

使用 ts 能减少大量问题

var a = 100;
a();

SyntaxError 语法错误

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError

对象代表尝试解析语法上不合法的代码的错误

当 Javascript 语言解析代码时,JavaScript 引擎发现了不符合语法规范的 tokens 或 token 顺序时抛出SyntaxError

var aaa = function() {
  var p 1 = 9
}
aaa()

不常见的错误类型

RangeError 越界错误

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RangeError

会在数值越界时抛出。例如,定义数组时如果设置了不支持的长度 -1,又或者没有给递归设置停止条件时触发。

可能出现的情况

  • 将不允许的字符串传递给 String.prototype.normalize()
  • 使用 Array 构造函数创建一个具有不合法的长度的字符串
  • 传递错误值到数值计算方法

在 js 中发生的不多

var arr = new Array(-1)

URIError

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/URIError

URIError 只会在使用 encodeURL()或 decodeURL()时,传入了格式错误的 URL 时发生,但非常罕见,因为上面两个函数非常稳健

EvalError

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/EvalError

会在使用 eval 函数发生异常时抛出

EvalError 不在当前 ECMAScript 规范中使用, 因此不会被运行时抛出. 但是对象本身仍然与规范的早期版本向后兼容

InternalError

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/InternalError

表示出现在 JavaScript 引擎内部的错误。

例如,递归过多导致了栈溢出.这类型并不是代码中通常要处理的错误,如果真的发生了这种错误,很可能代码哪里搞错了或者有危险.

但事实证明递归过多导致栈溢出报的是 RangeError

AggregateError

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/AggregateError
实验中的功能

一个 AggregateError 当需要由操作报告多个错误被抛出

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant