2016-06-30 70 views
1

可以通過「unhandledrejection」承諾事件訪問堆棧跟蹤嗎?訪問未捕獲的承諾拒絕錯誤堆棧

self.addEventListener("error", function(event) { 
 
console.log(event.error.stack) 
 
event.preventDefault() 
 
}) //works 
 

 
self.addEventListener("unhandledrejection", function(event) { 
 
console.log(event.error.stack) 
 
event.preventDefault() 
 
}) //fails 
 

 
Promise.reject()

回答

1

如果你傳遞一個錯誤的對象作爲拒絕的理由,那麼你就可以訪問堆棧。

self.addEventListener("error", function(event) { 
    console.log(event.error.stack) 
    event.preventDefault() 
}) //works 

self.addEventListener("unhandledrejection", function(event) { 
    console.log(event.stack) 
    event.preventDefault() 
}) //works 

Promise.reject(
    new Error('rejected') // here's the magic 
)