**
JavaScript错误处理机制
**
1: 错误处理机制
1.Error对象
2.JavaScript的原生错误类型
3.自定义错误
4.throw语句
5.try...catch结构
6.finally代码块
1.1Error对象
JavaScript解析或执行时,一旦发生错误,引擎就会抛出一个错误对象。
JavaScript原生提供一个Error构造函数,所有抛出的错误都是这个构造函数的实例。
var err=new Error(‘出错了’);
err.message //’出错了’
上面代码中,我们调用Error构造函数,生成一个err实例。
Error构造函数接受一个参数,表示错误提示,可以从实例的message属性读到这个参数
代码解析或运行时发生错误,JavaScript引擎就会自动产生、并抛出一个Error对象的实例,
然后整个程序就中断在发生错误的地方,不再往下执行。
根据语言标准,Error对象的实例必须有message属性,表示出错误时的提示信息。
2.JavaScript的原生错误类型
Error对象是最一般的错误类型,在它的基础上,Javascript还定义了其他6种错误,也就是说,存在6个Error派生对象。
1.SyntaxError
解析代码时发生的错误
----------
var 1a;
console.log 'hello');
----------
2.ReferenceError
引用一个不存在变量时发生的错误
3.RangeError
是当一个值超出有效范围时发生的错误。主要有几种情况,一是数组长度为负数,
二是Number对象的方法参数超出范围,以及函数堆栈超过最大值。
----------
new Array(-1)
4.TypeError
变量或参数不是预期类型发生的错误。
----------
new 123
var obj={}
obj.unknownMethod()
----------
5.URIError
是URI相关参数不正确时抛出的错误,主要涉及encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()
6.EvalError
eval函数没有被正确执行时,会抛出EvalError错误
3.自定义错误
除了JavaScript内建的7种错误对象,还可以定义自己的错误对象。
function UserError(message){
this.message=message||”默认信息”;
this.name=”UserError”;
}
UserError.prototype=new Error();
UserError.prototype.constructor=UserError;
上面代码自定了一个错误对象UserError,让它继承Error对象。
然后,就可以生成这种自定义的错误了。
new UserError(“这是自定义的错误”);
4.throw语句
throw语句的作用是中断程序执行,抛出一个意外或错误。
throw “Error!”;
throw true;
上面代码表示,throw可以接受各种值作为参数。
5.try…catch结构
为了对错误进行处理,需要使用try…catch结构
try{
throw new Error(“出错了”);
}catch(e){
console.log(e.name+”:”+e.message);
console.log(e.stack);
}
上面代码中,try代码块抛出错误,JavaScript引擎就立即把代码的执行转到catch
错误可以被catch捕获
6.finally代码块
try…catch结构允许在最后添加一个finally代码块,表示不管是否出现错误,都必须运行