前端控制台报错类型总结

1,187 阅读2分钟

1. EvalError:

new EvalError([message[, fileName[, lineNumber]]])

代表了一个关于 eval函数的错误.此异常不再会被JavaScript抛出,但是EvalError对象仍然保持兼容性.

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

2. InternalError

new InternalError([message[, fileName[, lineNumber]]])

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

示例场景通常为某些成分过大
  • "too many switch cases"(过多case子句);
  • "too many parentheses in regular expression"(正则表达式中括号过多);
  • "array initializer too large"(数组初始化器(初始值)过大);
  • "too much recursion"(递归过深)。

3. RangeError

new RangeError([message[, fileName[, lineNumber]]])

标明一个错误,当一个值不在其所允许的范围或者集合中。

应用场景
  • 当传递一个不合法的length值作为Array 构造器的参数创建数组
  • 传递错误值到数值计算方法(Number.toExponential(),Number.toFixed() ,Number.toPrecision()),会出现RangeError。

例子:

  • 1.Uncaught RangeError: Maximum call stack(无终止地调用一个递归函数,还有当你给函数传参时,如果超出了范围,也会出现这个错误)。

4. ReferenceError

new ReferenceError([message[, fileName[, lineNumber]]])

引用一个未被定义的变量时,将会抛出一个 ReferenceError 。

当您尝试访问未定义的变量或当前作用域无法访问到的变量时,就会出现这个错误:

ReferenceError: event is not defined

function fn(){
    var foo;
}
console.log(foo);
Uncaught ReferenceError:foo is not defined

5. SyntaxError

new SyntaxError([message[, fileName[, lineNumber]]])

尝试解析语法上不合法的代码会抛出的错误

6. TypeError

new TypeError([message[, fileName[, lineNumber]]])

当传入函数的操作数或参数的类型并非操作符或函数所预期的类型时,将抛出一个 TypeError 类型错误。

例子:

  • 1.Uncaught TypeError: Cannot read property
var foo
undefined
foo.bar
Uncaught TypeError: Cannot read property 'bar' of undefined
  • 2.Uncaught TypeError: 'xxx' is not a function
this.foo()
Uncaught TypeError: this.foo is not a function

通常由于尝试不存在的对象或者方法引起的

7. URIErro

new URIError([message[, fileName[, lineNumber]]])

以一种错误的方式使用全局URI处理函数而产生的错误。

参数:

  • message可选,可读的错误描述

  • fileName可选,包含造成异常代码的文件名

  • lineNumber可选,造成异常的代码所在的行数

8.(unknown): Script error

当一个未被捕获的错误在跨域时,违背了浏览器的跨域策略,就会出现这个错误

想要获取到真实详细的错误信息: 在header里添加 Access-Control-Allow-Origin 字段