JavaScript?error瀏覽器端錯(cuò)誤捕獲處理方法筆記解決示例
summary
- window.onerror 無(wú)法捕獲 onunhandledrejection 錯(cuò)誤
- try...catch 無(wú)法捕獲異步錯(cuò)誤,包括 setTimeout 和 promise??梢圆东@ async...await 錯(cuò)誤
- promise 被 rejected,在有 onRejected 的情況下,onRejected 發(fā)揮作用,catch 并未被調(diào)用;在沒(méi)有onRejected 的情況下 catch 發(fā)揮作用
- onResolve 和 onRejected 里的錯(cuò)誤,可以被后面的 catch 捕獲,無(wú)法被 try...catch 捕獲
other
- try...catch 也無(wú)法捕獲語(yǔ)法錯(cuò)誤
- 如果想使用 window.onerror 函數(shù)消化錯(cuò)誤,需要顯示返回 true,以保證錯(cuò)誤不會(huì)向上拋出,控制臺(tái)也就不會(huì)看到一堆錯(cuò)誤提示。
- 跨域之后 window.onerror 在很多瀏覽器中是無(wú)法捕獲異常信息的。要統(tǒng)一返回 Script error,這就需要 script 腳本設(shè)置為:
crossorigin="anonymous" - 處理網(wǎng)絡(luò)加載錯(cuò)誤:使用 window.addEventListener('error') 方式對(duì)加載異常進(jìn)行處理。注意這時(shí)候我們無(wú)法使用 window.onerror 進(jìn)行處理, 因?yàn)?window.onerror 事件是通過(guò)事件冒泡獲取 error 信息的,而網(wǎng)絡(luò)加載錯(cuò)誤是不會(huì)進(jìn)行事件冒泡的。
- 怎么區(qū)分網(wǎng)絡(luò)資源加載錯(cuò)誤和其他一般錯(cuò)誤:普通錯(cuò)誤的 error 對(duì)象中會(huì)有一個(gè) error.message 屬性,表示錯(cuò)誤信息,而資源加載錯(cuò)誤對(duì)應(yīng)的 error 對(duì)象卻沒(méi)有,
test code
window.onerror = () => { console.log('window.onerror')}
window.onunhandledrejection = () => { console.log('window.onunhandledrejection') }
const fetchDataSuccess = () => Promise.resolve({ name:'123'})
const fetchDataFail = () => Promise.reject({ name:'123'})
const testTryCatch = async() =>{
try{
// Promise.reject('reject')
// throw Error('err')
await fetchDataFail()
console.log('fetch success')
} catch(e){
console.log('catch error:',e)
}
}
const testPromiseError = () => {
try{
new Promise((resolve, reject) => {
throw new Error()
// resolve({})
}).then( () => {
console.log('resolved')
// throw Error()
}, err => {
console.log('rejected')
throw err
})
// .catch(err => {
// console.log('catch')
// })
}catch(e){
console.log('testPromiseError try-catch')
}
}
// testTryCatch();
// testPromiseError();from: https://fe.mbear.top/xing-neng-you-hua/032-xing-neng-jian-kon...
以上就是瀏覽器端錯(cuò)誤捕獲處理方法筆記解決示例的詳細(xì)內(nèi)容,更多關(guān)于瀏覽器端錯(cuò)誤捕獲的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JavaScript代碼調(diào)試方法實(shí)例小結(jié)
這篇文章主要介紹了JavaScript代碼調(diào)試方法,結(jié)合實(shí)例形式總結(jié)分析了JavaScript錯(cuò)誤信息的處理與代碼調(diào)試相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
JS基于Ajax實(shí)現(xiàn)的網(wǎng)頁(yè)Loading效果代碼
這篇文章主要介紹了JS基于Ajax實(shí)現(xiàn)的網(wǎng)頁(yè)Loading效果代碼,通過(guò)時(shí)間函數(shù)結(jié)合數(shù)學(xué)運(yùn)算實(shí)現(xiàn)頁(yè)面樣式的動(dòng)態(tài)變換技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
用XMLDOM和ADODB.Stream實(shí)現(xiàn)base64編碼解碼實(shí)現(xiàn)代碼
用 XMLDOM 和 ADODB.Stream 實(shí)現(xiàn)base64編碼解碼實(shí)現(xiàn)代碼,需要的朋友可以參考下。2010-11-11
小程序開(kāi)發(fā)?page-container?頁(yè)面容器彈出對(duì)話框功能的實(shí)現(xiàn)
這篇文章主要介紹了小程序開(kāi)發(fā)?page-container?頁(yè)面容器,彈出對(duì)話框,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
javascript新建標(biāo)簽,判斷鍵盤輸入,以及判斷焦點(diǎn)(示例代碼)
這篇文章主要介紹了javascript新建標(biāo)簽,判斷鍵盤輸入,以及判斷焦點(diǎn)(示例代碼)。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-11-11

