<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        JavaScript異常處理之trycatchfinally的實例分析

        來源:懂視網 責編:小采 時間:2020-11-27 20:11:40
        文檔

        JavaScript異常處理之trycatchfinally的實例分析

        JavaScript異常處理之trycatchfinally的實例分析:語法結構try catch finally是ECMAScript-262 第三版提供異常處理機制的標準,語法結構如下:1 try{ 2 //可能會發生的錯誤代碼 3 } 4 catch(error){ 5 //錯誤處理 6 }finally{ 7 //無論是否有異常都會執行 8 }語法與大多數語言一樣 如java .
        推薦度:
        導讀JavaScript異常處理之trycatchfinally的實例分析:語法結構try catch finally是ECMAScript-262 第三版提供異常處理機制的標準,語法結構如下:1 try{ 2 //可能會發生的錯誤代碼 3 } 4 catch(error){ 5 //錯誤處理 6 }finally{ 7 //無論是否有異常都會執行 8 }語法與大多數語言一樣 如java .

        語法結構

        try catch finally是ECMAScript-262 第三版提供異常處理機制的標準,語法結構如下:

        1 try{
        2 //可能會發生的錯誤代碼
        3 }
        4 catch(error){
        5 //錯誤處理
        6 }finally{
        7 //無論是否有異常都會執行
        8 }

        語法與大多數語言一樣 如java .net,如果try{}代碼塊捕獲到了異常,那么catch塊會得到一個錯誤信息對象(Error 的實例)。

        我們應該把有可能發生錯誤的代碼放在try塊中,而錯誤處理在catch塊中;在js中如果<script></script>代碼塊中發生了錯誤且沒有進行捕獲異常處理,那么當前<script>代碼塊后續的代碼是不會執行的 ,但是不會影響到其他<script></script>代碼塊代碼如:

         1 <script> 
         2 function run(){ 
         3 console.log(age); 
         4 } 
         5 run(); 
         6 console.log('可以
        輸出嗎?');//沒有執行 7 </script> 8 9 <script> 10 console.log('這是第二個代碼塊');//執行了,這是第二個代碼塊 11 </script>

        反之后續的代碼還是會執行 如:

         1 <script> 
         2 function run(){ 
         3 try{ 
         4 console.log(age); 
         5 }catch(error){ 
         6 
         7 } 
         8 
         9 }
         10 run();
         11 console.log('可以
        輸出嗎?');//可以輸出嗎? 12 </script> 13 14 <script> 15 console.log('這是第二個代碼塊');//這是第二個代碼塊 16 </script>

        finally語句

        如果存在finally代碼塊,那么不管什么原因里面的代碼都會執行,甚至是catch 語句中有return語句 如下代碼:

         function say() { try {
         console.log(age) return;
         } catch (erroe) {
         console.log(erroe.message);//age is not defined
         return;
         } finally {
         console.log('finally 執行了');//finally 執行了 }
         }
         say();

        認識Error 類型

        當代碼運行時發生錯誤,會創建一個Error對象,并將其拋出,這個對象包含了錯誤的描述信息。

        如在 try...catch(error){...} 語句中Error 是Error類型拋出的對象,該對象有三個基本的屬性name 錯誤名稱,message 錯誤信息,stack 錯誤棧信息;

        執行代碼期間可能會發生的錯誤有多種類型,所以Error 又派生了幾個兒子 如:

        Error Error 類型的錯誤很少見,如果有也是瀏覽器拋出的;這個基類型的主要目的是供開發人員拋出自定義錯誤。
        EvalError 創建一個error實例,表示錯誤的原因:與 eval() 有關。
        InternalError 創建一個代表Javascript引擎內部錯誤的異常拋出的實例。 如: "遞歸太多".
        RangeError 創建一個error實例,表示錯誤的原因:數值變量或參數超出其有效范圍。
        ReferenceError 創建一個error實例,表示錯誤的原因:無效引用。
        SyntaxError 創建一個error實例,表示錯誤的原因:eval()在解析代碼的過程中發生的語法錯誤。
        TypeError 創建一個error實例,表示錯誤的原因:變量或參數不屬于有效類型。
        URIError       創建一個error實例,表示錯誤的原因:給 encodeURI()或 decodeURl()傳遞的參數無效。

        Error 是基類,其他錯誤類型都是繼承自Error類型,所以子類也就具備了三個基本的屬性name 錯誤名稱,message 錯誤信息,stack 錯誤棧信息。

        有了這些錯誤類型我們就可以寫類似這樣的代碼,通過判斷異常的類型來特定處理某一類的異常 如:

         1 <script> 
         2 function run() { 
         3 try { 
         4 say("hello word"); 
         5 } 
         6 catch (error) { 
         7 for (var p in error) { 
         8 document.writeln(error[p]); 
         9 }
         10 //上面可以遍歷錯誤
         11 if (error instanceof EvalError) {
         12 //如果非法調用了eval()函數,則會拋出EvalError的異常。
         13 alert("EvalError");
         14 } else if (error instanceof ReferenceError) {
         15 //錯誤的引用,此例子是執行到了本步。
         16 alert("ReferenceError");
         17 } else if (error instanceof RangeError) {
         18 //數值超出了范圍
         19 alert("RangeError");
         20 } else if (error instanceof SyntaxError) {
         21 //語法錯誤,錯誤發生在eval(),
         22 alert("SyntaxError");
         23 } else if (error instanceof TypeError) {
         24 //變量類型不是預期的
         25 alert("TypeError");
         26 } else if (error instanceof URIError) {
         27 //錯誤發生在encodeURI()或decodeURI()中
         28 alert("URIError");
         29 }
         30 }
         31 }
         32 run();
         33 </script>

        throw拋出自定義錯誤類型

        語法:throw exception;

        exception 可以是任何類型的數據 如:

        throw 12345;

        throw 'hello';

        throw true;

        throw {name:'Joel',age:20};

        使用throw語句來拋出一個自定義異常 如:

         1 <script> 
         2 function see(){ 
         3 try { 
         4 if(true){ 
         5 throw new Error("my eroor!"); 
         6 } 
         7 
         8 } catch (error) { 
         9 console.log(error.name );//Error
         10 console.log(error.message);//my eroor!
         11 console.log(error.stack);//Error: my eroor! at see (try.html:12) at try.html:22
         12 }
         13 }
         14 see();
         15 </script>

        Javascript的異常處理機制

        當執行的javascript代碼中出現錯誤的時候,js引擎就會根據js的調用棧逐級尋找對應的catch,如果沒有找到相應的catch handler或者本身又有error或者又拋出新的error,最后就會把這個error的處理交給瀏覽器,瀏覽器會用各自不同的方式(IE以黃色三角圖案顯示在左下角,而firefix會顯示在錯誤控制臺中)顯示錯誤信息給用戶;

        window.onerror

        任何沒有通過tyr-catch處理的錯誤都會觸發window對象的error事件 如:

         1 <script> 
         2 window.onerror= function (msg,url,l) 
         3 { 
         4 console.log(msg)//Uncaught ReferenceError: a is not defined 
         5 console.log(url)//http://localhost:63342/person_Project/js_demo/onerror.html 
         6 console.log(l)//17 
         7 } 
         8 
         9 function run(){
         10 console.log(a)
         11 }
         12 run()
         13 </script>

        window.onerror 事件接收三個參數:msg 錯誤消息、url 發生錯誤的頁面的 url 、line 發生錯誤的代碼行。

        前端代碼異常監控方案

        有了try catch 捕獲的錯誤對象加上window.onerror 全局監聽錯誤事件,那么前端js代碼錯誤監控變的太簡單了。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        JavaScript異常處理之trycatchfinally的實例分析

        JavaScript異常處理之trycatchfinally的實例分析:語法結構try catch finally是ECMAScript-262 第三版提供異常處理機制的標準,語法結構如下:1 try{ 2 //可能會發生的錯誤代碼 3 } 4 catch(error){ 5 //錯誤處理 6 }finally{ 7 //無論是否有異常都會執行 8 }語法與大多數語言一樣 如java .
        推薦度:
        標簽: 錯誤 js 異常的
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲精品人成网在线播放影院| 亚洲色av性色在线观无码| 亚洲国产欧洲综合997久久| 国产1000部成人免费视频| 18亚洲男同志videos网站| 日本免费一区二区在线观看| 亚洲色图综合网站| A级毛片内射免费视频| 亚洲无mate20pro麻豆| 好男人看视频免费2019中文| 亚洲欧洲无码一区二区三区| 四虎影视永久免费观看| 尤物视频在线免费观看| 国产偷v国产偷v亚洲高清| 99免费在线观看视频| 亚洲一区二区三区免费视频| 日韩一级免费视频| 又硬又粗又长又爽免费看| 亚洲乱码国产一区三区| 88xx成人永久免费观看| 精品国产日韩久久亚洲| 亚洲精品国产精品乱码不卞| 免费看成人AA片无码视频吃奶| 亚洲精品福利网站| 午夜时刻免费入口| 久久WWW免费人成—看片| 亚洲伦理一区二区| 日韩精品视频免费网址| 二级毛片免费观看全程| 亚洲精品福利网泷泽萝拉| 成年女人毛片免费视频| GOGOGO高清免费看韩国| 亚洲乱码卡三乱码新区| 深夜国产福利99亚洲视频| 久爱免费观看在线网站| 亚洲日韩一区二区三区| 亚洲一区无码中文字幕| 最近中文字幕mv免费高清电影| yellow视频免费看| 亚洲中文精品久久久久久不卡| 国产精品亚洲mnbav网站|