当运行时错误产生时,Error对象会被抛出。Error对象也可用于用户自定义的异常的基础对象。下面列出了各种内建的标准错误类型。
EvalError:
创建一个error实例,表示错误的原因与eval()有关。
RangeError:
创建一个error实例,表示错误的原因:数值变量或参数超出其有效范围。
var a = [];
a.length = -1 // RangeError: Invalid array length
var b = 12.13
console.log(b.toFixed(1)) // 12.1
console.log(b.toFixed(-1)) // RangeError: toFixed() digits argument must be between 0 and 100
ReferenceError:
创建一个error实例,表示错误的原因:无效引用,一般出现在变量找不到的情况下。
// 引用一个不存在的变量
console.log(b) // ReferenceError: b is not defined
// 给一个无法被赋值的对象赋值
console.info() = 12 // ReferenceError: Invalid left-hand side in assignment
SyntaxError:
创建一个error实例,表示错误的原因:语法错误。
// 缺少引号
console.info(2; // SyntaxError: missing ) after argument list
// 变量名不规范
var 6; // SyntaxError: Unexpected number
TypeError:
创建一个error实例,表示错误的原因:变量或参数不属于有效类型。
var a = new 2; // TypeError: 2 is not a constructor
// 调用不存在的方法
var b;
b.set(); // TypeError: Cannot read property 'set' of undefined
URIError:
创建一个error实例,表示错误的原因:给encodeURI()或decodeURI()传递的参数无效。
AggregateError:
创建一个error实例,其中包裹了由一个操作产生且需要报告的多个错误。如:Promise.any()产生的错误。
InternalError:
创建一个代表javascript引擎内部错误的异常抛出的实例,如:递归太多。