-
Notifications
You must be signed in to change notification settings - Fork 0
Description
常见错误类型
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 当需要由操作报告多个错误被抛出