javascript的错误处理机制

一、在我们平时写代码的时候,一旦js引擎去运行时候发现了错误就会抛出一个错误对象。
Javascript提供原生的构造函数Error()、所以的错误对象都是它的实例。

  <script>
     let x=new Error('错')
     console.log(x.message);
     console.log(x.__proto__);//打印结果如下图
    </script>

在这里插入图片描述
实例对象的属性有:message:"“错误的提示信息”,
name:"错误名称“,
stack:"错误的堆栈”
利用 name和message可以对错误作出一个判断。

  let x = new Error("错");
      if (x.name) {
        console.log(`错误的信息为:${x.message},错误的名称  为:${x.name}`);
      }

二、Error实例对象为一般的错误对象、在它的基础上、javascript还定义了其他的六种错误对象。即存在Error()的6个派生对象。

  1. SynataxError对象:
    SynataxError对象为解析代码时候发生的语法错误、例如:
  let 1d="5"  console.log(55);  //Uncaught SyntaxError: Invalid or unexpected token
  1. ReferenceError对象
    ReferenceError对象为引用一个不存在的变量发生的错误:例如:
 console.log(a); //object.html:11 Uncaught ReferenceError: a is not defined
  1. RangeError对象
    RangeError对象为一个值超出有效范围发生的错误、主要为函数栈堆超出最大值、数组的长度为负数等。
  var x=new Array(-1)
  console.log(x);//object.html:11 Uncaught RangeError: Invalid   array length

4.TypeError对象
TypeError对象为变量或者参数不是预期时候发生的错误、例如用new关键字去new基本数据类型。

  var x=new  5
  console.log(x);//object.html:11 Uncaught TypeError: 5 is not a constructor

5.URlError对象
URIError对象是URI相关参数不正确抛出的错误、主要有:
encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()这六个函数。

  var x=decodeURI('%2')
  console.log(x);//Uncaught URIError: URI malformed
  1. EvalError对象
    eval函数没有被正确执行时候会抛出EvalError错误、该错误对象已经不在使用。

二、以上的6中派生的错位对象都是构造函数:这些构造函数都接收一个参数代表错误的提示信息。

      var error=new Error('出错误了')
     var synatax=new SyntaxError('语法出错了')
     var Reference=new ReferenceError('引用了不存在的变量')
     var range=new RangeError('超出范围我的了')
     var type=new TypeError('类型错误、不是我预期的类型')
     var URI=URIError('URI参数不正确')
   

三、 throw语句
throw语句用于手动抛出错误对象例如:

     var x=2
     if(x>1){
         throw new Error('我自己抛出错误')
     }
   //object.html:13 Uncaught Error: 我自己抛出错误
   // at object.html:13

四、try-catch语句

在我们写代码的时候如果报错代码就不会在往下执行、这时候我们可以利用try-catch语句去捕获错误。

     var x=2
     try {
       if(x>1){
           throw new Error('我自己抛出错误')
       }
     } catch (error) {
        console.log(error);//  Error: 我自己抛出错误
   
     } 

如果我们在写代码的时候不确定什么时候会报错,而且不想让代码终止执行,那么我们就可以把其放到try-catch中。

  var x=2
     try {
       if(x>1){
           throw new Error('我自己抛出错误')
       }
     } catch (error) {
        console.log(error);//  Error: 我自己抛出错误
   
     } 
    console.log("11111"); //上面的错被try-catch捕获了、程序才能执行到我这里

五、 finally语句
我们可以在try-catch语句后面加上finally语句、无论程序执行结果如何、finally语句都会被执行。

    var x=2
     try {
       if(x>1){
           throw new Error('我自己抛出错误')
       }
     } catch (error) {
        console.log(error);//  Error: 我自己抛出错误
   
     } finally{
       console.log("我一定被执行");
     }
    console.log("11111"); //上面的错被try-catch捕获了、程序才能执行到我这里
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值