捕获错误的几种方式

关于捕获错误的几种方式

try/catch

使用范围:

  • 在同步函数中,可以使用try/catch捕获错误信息。

    var b = 0;
    try {
        console.log(a); //变量a不存在,发生错误
    } catch (err) { //catch()捕获error name=err
        console.log(b = 1); //执行此代码以矫正错误
        if (confirm("对还是错?")) { //弹出对话框,显示信息“对还是错?”和“确定”/“取消”按钮
            document.write("对"); //按“确定”,页面输出“对”
        } else {
            document.write("错"); //按“取消”,页面输出“错”
        }
    }
    
  • 由于async/await并没有自己的错误信息捕获机制,所以try/catch用来捕获async/await函数的错误机制

    async function asyfn(){
      try{
          var result1 = await fn(false, 'hello');
          console.log('中间内容输出');
          var result2 = await fn(false, 'world');
          console.log(result1,result2); 
        }catch(e){
            console.log('catch',e)
       }
    }
     
    

使用catch捕获Promise错误

注意的是:try/catch不能捕获异步函数的错误信息,所以对于Promise来说,try/catch并不能捕获它的错误信息。但是这并没有关系,应为对于Promise来说,它有自己捕获错误信息的方式。使用链式调用方法catch()方法,捕获Promise错误信息。

function asyncFunction(){
	return new Promise(function(resolve, reject){
		console.log('aaa')
		throw new Error('throw new error')
		console.log('bbb')
		resolve('resolve error')
	})
}

asyncFunction().catch(function(error){
	console.log('one', error)
}).then(function(message){
	console.log('resolve')
}).catch(function(error){
	console.log('two', error)
})

指得注意的是:上面所说的try/catch不能捕获异步函数的错误信息对于async/await来说,并不使用。try/catch的错误信息能够被try/catch所捕获到。

使用回调函数捕获错误

就是利用回调函数,判断是否出现问题。这个方法基本不再使用,这里不在讲述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值