zoukankan      html  css  js  c++  java
  • JavaScript的错误处理

    一、错误类型

    Error
    EvalError
    RangeError
    ReferenceError
    syntaxError 语法错误
    TypeError
    URIError

    Error是基类型,其他错误类型都继承自该对象,因此所有的错误类型都共享一组相同的属性。该错误类型很少见。

    EvalError是使用eval()函数而发生的异常抛出的,当没有吧eval()当成一个函数使用的时候就会抛出。

    RangeError
    数值超出一定的范围会触发,在找不到对象的时候也会触发,在未声明时候去使用变量时候也会触发

    TypeError
    类型错误,最常见的额类型错误就是传递给函数的参数事先未检查

    二、try-catch语句

    try{
          leaf()
    } catch(error){
          console.log(error.message);
    }
    //leaf is not defined

    三、finally

    可选的,但是一旦使用,其代码无论如何都会执行,即使前面使用了return

    try{
            return 1;
    }catch(error){
            return 2;
    }finally{
             return 3;
    }
    
    //chrome下报错了Uncaught SyntaxError: Illegal return statement
    

    四、抛出错误  throw操作  

    在遇到throw符号的时候,代码会立即执行。仅当try-catch语句捕获到被抛出的值的时候,代码才会继续执行。

     throw new Error('something bad hanppened');
    

      

    五、Error事件
      任何没有通过try-catch处理的错误都会触发window对象的error事件。只要发生错误,无论是不是浏览器生成的,都会触发error事件,并执行这个事件的处理函数。img的没有获得正确的src也会触发。

    六、常见的错误类型

      1、类型转换错误

      console.log(1==true) //true
      console.log(1==true) //false

           在if()之类的判断语句中,在执行下一步的时候,会自动的把任何值转换成布尔值。

           方案: 建议使用 ===    !== 操作符


           2、数据类型错误

      比如
      null 和undefined 使用点操作
      对非数组的值使用sort()的reversed()等方法

      方案:
      基本类型(undefined null boolean string number)用typeof去检测;
      对象则用instanceof去检测(注意array比较特别)

           3、通信错误
      不正确的使用URL和在服务器响应的数据不正确的时候
      解决,将数据发给服务器应该使用encodeURIComponent()对数据进行编码。

    七、总结

    避免浏览器响应JavaScript错误的方法

      1、在可能发生错误的地方使用try-catch语句,这样有机会以适当的方式对错误给出响应,不必沿用浏览器的错误机制。

      2、是当时会用window.onerror事件处理程序,此方法可以处理try-catch不能处理的所有错误。

      3、发生书错误的主要原因
           类型转换,
      未充分检测数据类型
      发送到服务器或从服务器接收的数据有误

  • 相关阅读:
    linux基础
    1-1python自动化测试环境搭建及开发工具安装
    Linux常用命令
    049.NET5_中间件
    045.NET5_基本鉴权授权
    044.NET5_基于Session_Cookies认证
    042-043.NET5_ResultFilter以及双语言应用
    041.NET5_ExceptionFilter
    040.NET5_ExceptionFilter
    039.NET5_自定义Filter匿名
  • 原文地址:https://www.cnblogs.com/leaf930814/p/7221200.html
Copyright © 2011-2022 走看看