您的位置:首页 > Web前端 > JavaScript

JavaScript错误和异常

2016-05-10 21:33 483 查看
1.Error对象

表示一个错误,代码运行中发生错误时,会创建Error对象并抛出。

创建错误:
new Error([message],[filename],[lineNumber])

Error类型:

EvalError 与eval相关的错误

InternalError javascript引擎内部错误,如递归太多

RangeError 数值变量或参数超出有效范围

ReferenceError 无效引用

SyntaxError 语法错误

TypeError 变量或参数不属于有效类型

URIError 给encodeURI()或decodeURI传递的参数无效

Error.prototype主要属性

name:'Error'

message 错误信息

stack 错误跟踪

2.处理异常

try catch语句可以处理异常。有三种结构:

try catch

try finally

try catch finally

try中异常发生就不再执行剩余代码,转而执行catch。

     try{ //需要被执行的语句
console.log('begin');
throw new Error('hoho!');
//throw new Error('hoho!','test.html','28'); 设置了也没用
console.log('after');   //不会被执行
}
catch(err){ //try中有异常时执行的语句
console.error(err.stack);   //Error: hoho! at test.html:29
//console.log(err.name+":"+err.message);  //Error:hoho!
}
finally{  //无论是否有异常都会执行的语句
console.log('end.');
}


try嵌套时,异常被最近的catch捕获一次。catch中能向外抛出新异常。inally中有return将结束整个try,不再处理异常。

     try{
try{
throw new Error('hoho!');
} catch(err){
console.error('inner',err.message);
throw err;
} finally{
console.log('end');
}
} catch(err){
console.error('outer',err.message);
}
//output:
//end
//inner hoho!
//outer hoho!


4.监听所有异常

     window.onerror = function(message,source,lineNumber,rowNumber,error){ //参数以Chrome为例

console.log('处理错误...');

return true;   //true不提示错误,flase提示错误
}

//allert(1);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: