js面試題---try的catch和promise的catch有什么區別


首先,相同點,都是獲取代碼錯誤信息的方法,而且2種都不能獲取異步錯誤。比如:

try和catch

function f2() {
 try {
  console.log(a)
 } catch (e) {
  console.log(e) // a is not defined
 }
}
f2()

 

function f2() {
 try {
  setTimeout(() => {
   console.log(a)
   }, 100)
 } catch (e) {
 console.log(e)
 }
}
f2()

報錯:Uncaught ReferenceError: a is not defined

--------------------------------

promise和catch

var c = new Promise((resolve, reject) => {
  setTimeout(() => {
     console.log(a)
      }, 100)
}).catch(error => {
  console.log(error) // b is not defined
})

var c = new Promise((resolve, reject) => {
  a = b + c
}).catch(error => {
  console.log(error) 
})

報錯:Uncaught ReferenceError: a is not defined

---------------------------------

不同點:try,catch不能捕獲promise里reject出來的錯誤信息,比如:

function f2() {
 try {
  Promise.reject('出錯了');
 } catch(e) {
  console.log(e)
 }
}
f2()

報錯:Uncaught (in promise) 出錯了

如果需要在try,catch里獲取promise里的錯誤時,可以這樣使用:

function f2() {
try {
 Promise.reject('出錯了').catch(err => {
  console.log('2', err)
 });
  console.log('1')
 } catch (e) {
  console.log(e)
 }
}
f2()

// 1

// 2 出錯了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM