+发表新主题
查看: 2261|回复: 0

[代码片段] js 错误处理

[复制链接]

[代码片段] js 错误处理

[复制链接]
木钟无仁 发表于 2015-12-31 20:02:03 浏览:  2261 回复:  0 [显示全部楼层] |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
. 错误处理:

     1. 错误:程序执行过程中导致程序异常中断的状态

       Error对象:封装了错误信息的对象

       何时创建Error对象:发生错误时,js自动创建

    Error子对象:6种:

       ReferenceError: 引用错误,找不到对象

       SyntaxError: 语法错误

       TypeError: 类型错误,错误的使用类型或类型的方法

       RangeError: 范围错误,参数超范围

      

       EvalErrorURIError


   2. 错误处理:发生错误时,保证程序不中断

     如何错误处理:

        try{

              可能发生错误的代码  //如果出错,出错位置及后面代码不执行

        }catch(err){  //err中发生错误时会自动收到创建的error对象

            err.message: 保存了错误的详细原因

            err.name: 保存了错误对象的名称

                   如果发生错误,才执行的错误处理代码

        }finally{

                无论是否发生错误,都执行的代码

            一定会在退出之前执行

            一般释放用过的对象资源:xxx=null

        }


  1. 例如:

  2.      var n=345.465;

  3.      var d=prompt("请输入四舍五入的位数");

  4.    try{

  5.      console.log(n.toFixed(d));

  6.    }catch(err){

  7.      alert(err.message);

  8.    }finally{

  9.       alert("释放资源");

  10.    }
复制代码
195515u6uu75euyux9he6r.png 195515u6uu75euyux9he6r.png 195515u6uu75euyux9he6r.png

         其实,如果可以提前预知错误的原因:建议使用if代替try catch

          执行效率:try中尽量少的包含代码

              try的执行效率低,且多创建一个error对象

   

   


  • 例如: 使用if代替 try..catch
  •    //使用if代替
  •    var n=345.465;
  •    var d=prompt("请输入四舍五入的位数");
  •    if(d>=0&&d<=20){
  •      console.log(n.toFixed(d));
  •    }else{
  •   alert("位数不在0-20之间!");
  •    }      alert("释放资源");

复制代码
195515u6uu75euyux9he6r.png 195515u6uu75euyux9he6r.png 195515u6uu75euyux9he6r.png





     3.抛出自定义错误:

     throw new Error("自定义错误消息");


  • 例如:
  •    //throw new Error(“自定义错误”)
  •     function round(num,d){
  •     if(!isNaN(d)){
  •   num*=Math.pow(10,d);
  •   num=Math.round(num.toFixed(2));
  •   num/=Math.pow(10,d);
  •   return num;
  • }else{throw new Error("第二个参数必须是数字");}
  • }
  • function fun(){
  •     var num=prompt("输入四舍五入的值");
  • var d=prompt("输入位数");
  • alert(round(num,d));
  • }fun();

复制代码
195515u6uu75euyux9he6r.png 195515u6uu75euyux9he6r.png 195515u6uu75euyux9he6r.png 195515u6uu75euyux9he6r.png 195515u6uu75euyux9he6r.png


      
回复

使用道具 举报


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版| 赣南网

© 2013-2016 Comsenz Inc. Powered by Discuz! X3.4

用微信扫一扫

赣南网