成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

詳解JavaScript錯誤捕獲

瀏覽:3日期:2023-10-02 17:23:41
一、基本使用與邏輯

使用

try{ //code....}catch(err){ //error handling}finally{ //no matter what happens in the try/catch (error or no error), this code in the finally statement should run. }

邏輯

詳解JavaScript錯誤捕獲

二、特性

try...catch 僅適用于運行時錯誤,解釋階段錯誤無法正常工作

try{ {{{{{{{}catch(err){ console.error(err)}//引擎在‘parse-time’出錯,導致無法理解代碼,因此無法捕捉

try...catch 只能同步工作

try{ setTimeout(function(){undefinedVariable; },1000)}catch(err){ console.error(err)}//setTimeout的回調函數執行時,引擎已經離開try...catch結構

finally 能讓try塊中的return語句失效

function test(){ try { return 1; } catch(error) { return 2; } finally { return 3; }}console.log(test());//3三、錯誤對象

當程序發生error,js內部會生成一個包含error細節的對象,該對象會被作為參數傳進catch

對于所有內置錯誤,錯誤對象具有兩個主要屬性

name 錯誤類型 message 文本類型的錯誤信息 stack (非標準屬性)發生錯誤時的調用棧信息,主要用于調試

try { lalala; // error, variable is not defined!} catch (err) { alert(err.name); // ReferenceError alert(err.message); // lalala is not defined alert(err.stack); // ReferenceError: lalala is not defined at (...call stack) // Can also show an error as a whole // The error is converted to string as 'name: message' alert(err); // ReferenceError: lalala is not defined}

理論上,我們可以throw任何東西作為錯誤對象,但最好的習慣是throw一個具有name,message的對象,以便和內置錯誤對象保持兼容

番外:內置的錯誤對象

對象 含義 ReferenceError 引用未定義變量時觸發 SyntaxError 使用不合法的語法結構時觸發 TypeError 值得類型非預期時觸發 URIError 錯誤使用全局URI函數如encodeURI()、decodeURI()等時觸發 RangeError 對Array構造函數使用錯誤的長度值,對Number.toExponential()、Number.toFixed()或Number.toPrecision()使用無效數字等 EvalError 全局函數eval()中發生的錯誤 四、較好的catch和throw策略

​ catch錯誤不單單是為了防止程序掛掉,更重要的目的是方便調試,找bug,所以對錯誤的處理策略,稍微可以體現出碼者的優雅性

​ 俗話說的好,碼者,人恒雅也,盡量遵循一個原則,catch只處理自己知道的錯誤

舉個梨子

let json = ’{ 'age': 30 }’; try{ let user = JSON.parse(json); alert( user.name );} catch (err) { console.error(’JSON Error:’+err);}

上述例子的catch策略能保證程序正常,因為catch塊能catch內部所有的錯誤,無論是JSON.parse出錯還是user.name不存在報錯,都能被catch到,但兩種錯誤都用同一種打印是不利于調試的,寫成下面這樣會好一點

let json = ’{'age':30}’try{ let user = JSON.parse(json); alert(user.name)}catch(err){ if(err instanceof SyntaxError){ console.error(’JSON Error:’+err); } else throw err;}

每個catch塊處理自己知道得,可能會出現得錯誤,就是說,編程人員在編程的時候,catch那些預料到的錯誤,而將可能自己沒料到的錯誤拋到外面。

五、Promise的錯誤處理

​ 眾所周知,Promise是會吞掉error的,因為promise的實現就在內部對所有error進行了捕獲,且捕獲到的error不是向外拋出(外指promise之外),而是沿著鏈找到最近的onreject回調傳入,所以promise的錯誤處理只有兩種辦法

設置onreject回調 全局捕獲

舉個栗子

try{ new Promise((resolve,reject)=>{throw new Error(’promise error’) }).catch(()=>{//錯誤在最近的onreject回調被捕獲console.error(err); })}catch(err){ //永遠不會執行,promise吞掉error console.error(err);}

另外需要注意,無論是執行者函數(executor)和還是 promise 的處理程序(handler),內部發生的錯誤統統吞掉,相當于被隱式catch,error會自動找到最近的onreject回調傳進去

try{ new Promise((resolve,reject)=>{resolve(); }).then(()=>{throw new Error(’promise then error’); }).catch((err){console.error(err); })}catch(err){ //地球毀滅之前都不會執行 console.error(err)}

同理,在錯誤找到onreject傳進去之前,經過的then注冊的onfulfilled回調統統失效,直到找到onreject回調,處理之后,onreject回調之后的onfulfilled回調才正常

try { new Promise((resolve, reject) => {throw new Error(’promise error’) }).then((ret) => {//錯誤沒有處理,失效console.log(’then1:’ + ret) }).catch((err) => {//錯誤處理了,后序正常console.error(err);return ’handled’ }).then((ret) => {//正常執行console.log(’then2’ + ret); })} catch (err) { //同樣的,人類毀滅之前都不會執行 console.error(err)}// Error:promise error//then2handled

那整條鏈一個catch都沒設置會怎么樣呢?

那這個error就會擊穿地心,一直穿透到全局,根據宿主環境的不同觸發不同的全局事件,比如說瀏覽器中會觸發 unhandledrejection事件,node環境中也會觸發unhandledRejection事件,一般會對這事件進行監聽,再顯示信息給編程人員或者用戶

番外1:chromium / v8 / v8 / 3.29.45 的 Promise內部錯誤捕捉

詳解JavaScript錯誤捕獲

番外2:async/await錯誤捕捉

六、性能損耗​

After V8 version 6 (shipped with Node 8.3 and latest Chrome), the performance of code inside try-catch is the same as that of normal code. ------ 爆棧網

(稍微測了一下,相差無幾)

以上就是詳解JavaScript錯誤捕獲的詳細內容,更多關于JavaScript 錯誤捕獲的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产·精品毛片| 国模一区二区三区白浆| 蜜桃av一区二区三区| 99pao成人国产永久免费视频| 欧美一区二区日韩一区二区| 麻豆精品久久久| 美女主播一区| 亚洲国产视频一区二区| 亚洲国产第一| 中文字幕中文字幕一区二区| 欧美精品麻豆| 久久久久久**毛片大全| 国产成人自拍网| 欧美精品久久一区| 久久成人免费网| 91福利国产成人精品照片| 亚洲一区二区三区国产| 夜久久久久久| 亚洲欧美视频在线观看| 欧美亚洲不卡| 亚洲国产精品ⅴa在线观看| 92国产精品观看| 国产亚洲成aⅴ人片在线观看 | 亚洲国产日韩在线一区模特 | 国产suv一区二区三区88区| 69堂精品视频| 国产精品综合二区| 欧美一区二区三区公司| 国产经典欧美精品| 欧美一区二区三区在线看| 国产一区二区久久| 91麻豆精品国产91久久久更新时间 | 日韩色视频在线观看| 国产成人免费视频一区| 欧美一区二区在线播放| 成人av一区二区三区| 久久久亚洲精华液精华液精华液| 白白色 亚洲乱淫| 久久精品亚洲精品国产欧美kt∨ | 日韩电影在线免费看| 在线欧美日韩国产| 国产一区二区主播在线| 日韩视频免费观看高清完整版在线观看| 粉嫩蜜臀av国产精品网站| 国产欧美综合在线观看第十页| 欧美伊人影院| 亚洲天堂网中文字| 亚洲女同在线| 免费观看在线色综合| 欧美日韩精品一区二区| 成人手机电影网| 中文字幕乱码日本亚洲一区二区 | 欧美精品一卡| 自拍偷拍亚洲综合| 久久精品亚洲| 国产一区二区三区电影在线观看| 精品处破学生在线二十三| 欧美日韩在线不卡一区| 亚洲最快最全在线视频| 久久男女视频| 国产精品一区二区三区乱码| 久久久久久夜精品精品免费| 亚洲成人自拍视频| 日本在线不卡视频一二三区| 91精品国产91久久久久久最新毛片 | eeuss鲁片一区二区三区在线看| 国产亚洲综合av| 亚洲精品在线二区| 美国精品在线观看| 2023国产精华国产精品| 亚洲国产午夜| 久久99这里只有精品| 久久综合久色欧美综合狠狠| 亚洲精品麻豆| 毛片av一区二区三区| 欧美变态tickle挠乳网站| 今天的高清视频免费播放成人| 亚洲成人动漫一区| 欧美一区二区三区影视| 欧美三级不卡| 五月综合激情网| 日韩欧美视频在线| 一区二区免费在线视频| 国产一区视频网站| 国产精品卡一卡二| 欧美视频你懂的| 欧美一区国产在线| 天天做天天摸天天爽国产一区| 精品乱人伦小说| 9国产精品视频| 国产激情91久久精品导航 | 精品一区二区三区日韩| 国产亚洲欧洲997久久综合| 国产精品亚洲不卡a| 精品一区二区三区av| 欧美国产综合色视频| 久久青青草综合| 91在线高清观看| 日韩vs国产vs欧美| 欧美激情一区二区三区蜜桃视频| 日本道色综合久久| 欧美日韩中文| 国内精品免费**视频| 国产目拍亚洲精品99久久精品| 久久精品国产综合精品| 91无套直看片红桃| 日韩在线观看一区二区| xnxx国产精品| 一本色道久久综合亚洲aⅴ蜜桃| 99re热这里只有精品免费视频| 日韩制服丝袜av| 国产精品不卡一区二区三区| 91麻豆精品国产91久久久更新时间| 国产欧美一区二区三区另类精品 | 午夜精品剧场| 另类小说综合欧美亚洲| 欧美高清在线精品一区| 欧美午夜精品免费| 亚洲国产精品一区二区第四页av| 国产呦精品一区二区三区网站| 亚洲免费视频中文字幕| 欧美成人bangbros| 91福利在线导航| 日韩一区二区免费看| 成人aaaa免费全部观看| 日韩av电影免费观看高清完整版 | 免费看亚洲片| 午夜欧美理论片| 国产一区二区三区久久久| 夜夜精品视频一区二区| 精品少妇一区二区三区在线视频| 色婷婷亚洲综合| 亚洲高清激情| av一区二区久久| 亚洲欧美色图小说| 轻轻草成人在线| 成人免费看的视频| 欧美网站一区二区| 国产欧美一区二区精品性色超碰 | 国产精品久久久久久模特| 国产一区在线视频| 日韩精品一二三四| 亚洲欧美另类在线| 久久精品免视看| 欧美一区二区视频在线观看 | 久久夜色精品国产噜噜av| 欧美日韩一卡二卡三卡 | 国产女主播一区二区| 欧美三级午夜理伦三级中文幕| 国产成人高清视频| 日本大胆欧美人术艺术动态| 亚洲欧洲日韩av| 久久久亚洲国产美女国产盗摄| 欧美日本视频在线| 在线中文字幕一区| 亚洲欧美久久久| 99在线精品视频在线观看| 午夜久久黄色| 成人的网站免费观看| 国产在线观看免费一区| 蜜桃av一区二区| 免费观看日韩av| 日本不卡视频在线| 日韩成人精品在线| 日韩精品免费视频人成| 亚洲最大色网站| 亚洲欧美日韩电影| 国产亚洲一二三区| 久久人人超碰精品| 精品日产卡一卡二卡麻豆| 欧美一级二级三级蜜桃| 欧美挠脚心视频网站| 欧美亚洲综合网| 色天天综合色天天久久| 久久www成人_看片免费不卡| 国产视频在线观看一区| 亚洲精品激情| 国产人成精品一区二区三| 亚洲无线视频| 欧美午夜不卡影院在线观看完整版免费| 91免费在线播放| 女人天堂亚洲aⅴ在线观看| 99r国产精品| 波多野结衣91| 成人高清伦理免费影院在线观看| 丁香婷婷深情五月亚洲| 国产成人综合网站| 国产成人亚洲综合a∨婷婷图片| 精品一区二区三区久久| 国产在线看一区| 国产福利精品一区二区| 国产成+人+日韩+欧美+亚洲| 成人黄色av电影| 经典三级一区二区| 福利一区二区在线观看| av一区二区不卡| 欧美日本韩国在线| 国产精品a久久久久| 亚洲成色www久久网站| 日韩视频久久|