JavaScript错误和异常

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。

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

 

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

 1      try{
 2             try{
 3                 throw new Error('hoho!');
 4             } catch(err){
 5                 console.error('inner',err.message);
 6                 throw err;
 7             } finally{
 8                 console.log('end');
 9             }
10         } catch(err){
11             console.error('outer',err.message);
12         }
13         //output: 
14         //end 
15         //inner hoho! 
16         //outer hoho!

 

4.监听所有异常

1      window.onerror = function(message,source,lineNumber,rowNumber,error){ //参数以Chrome为例
2 
3             console.log('处理错误...');
4 
5             return true;   //true不提示错误,flase提示错误
6         }
7 
8         //allert(1);

 

posted @ 2016-05-10 21:33  海绵小猪  阅读(478)  评论(0编辑  收藏  举报