当前位置:   article > 正文

捕获错误的几种方式_try catch可以捕获error吗

try catch可以捕获error吗

关于捕获错误的几种方式

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("错"); //按“取消”,页面输出“错”
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 由于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)
       }
    }
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

使用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)
})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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

使用回调函数捕获错误

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/252864
推荐阅读
相关标签
  

闽ICP备14008679号