zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    Python导学基础(三)输入、格式化输出、基本运算符
    题解-FJOI2014 树的重心
    题解-CF1307G Cow and Exercise
    题解-SHOI2005 树的双中心
    笔记-CF643E Bear and Destroying Subtrees
    题解-CF643G Choosing Ads
    扩展Lucas
    线性筛筛积性函数
    整除分块(数论)
    2019暑假集训DAY17(problem2.b)(杜教筛)
  • 原文地址:https://www.cnblogs.com/feitan/p/5479501.html
Copyright © 2011-2022 走看看