在javascript中一旦代码解析或运行时发生错误,javascript引擎就会自动产生并抛出一个Error对象的实例,然后整个程序就中断在发生错误的地方。
Error对象的实例有三个基本的属性:
name:错误名称
message:错误提示信息
stack:错误栈
Error对象是最一般的错误类型,在它的基础上,javascript还定义了其他6种错误:
①、SyntaxError
解析代码时发生的语法错误,比如变量名错误、缺少括号等。
②、ReferenceError
引用一个不存在的变量时发生的错误或者将一个值分配给无法分配的对象,比如对函数的运行结果或者this赋值。
③、RangeError
当一个值超出有效范围时发生的错误,主要有数组长度为负数、number对象的方法参数超出范围、函数堆栈超过最大值。
④、TypeError
当变量或参数不是预期类型时发生的错误,比如对字符串、布尔值、数值等原始类型的值使用new命令就会抛出这种错误。
⑤、URIError
当URI相关函数的参数不正确时抛出的错误,主要涉及encodeURI、decodeURI、encodeURIComponent、encodeURIComponent、escape、unescape这六个函数。
⑥、EvalError
eval函数没有被正确执行时抛出此错误,该错误类型已经不再在ES5中出现了,只是为了保证与以前代码兼容才继续保留。
以上这六种派生错误连同原始的Error对象,都是构造函数,开发者可以使用它们人为生成错误对象实例。
自定义错误:
function UserError(message){
this.message = message || '默认信息';
this.name = 'UserError';
}
UserError.prototype = new Error();
UserError.prototype.constructor = UserError;