JavaScript try catch finally 語句
一.基礎知識:
try...catch...finally語句提供一種能夠處理指定程式碼錯誤,並且能夠保證程式碼正常執行的措施。
如果不使用此語句,如果指定的js程式碼出現程式碼錯誤,反饋到使用者介面上的將是非常不友好的崩潰資訊,並且這些資訊只對程式設計師有用,對於普通的瀏覽者來說,這個網頁已經出現問題,已經沒有繼續瀏覽的必要了。
語法結構:
[JavaScript] 純文字檢視 複製程式碼try{ //此語句從第一行開始執行,如果遇到錯誤(丟擲異常),該程式碼塊就會結束執行 } catch(e){ //如果try語句塊遇到錯誤(丟擲異常),此語句塊就會得到執行 //e是一個物件,含有與異常相關的資訊 } finally{ //無論try中程式碼是否有異常丟擲,finally程式碼塊中始終會被執行。 }
進一步補充說明:
(1).try{}必需,裡面是有可能出現錯誤異常的程式碼。
(2).catch(e){}可選,如果有此語句,那麼e則是必須的。用來處理相關聯try語句中發生的錯誤。
(3).finally{}可選,其中的程式碼會在錯誤過程發生之後無條件執行。
特別說明:
catch(e){}和finally{}至少存在一個或者兩個同時存在。
二.執行流程:
如果存在catch語句,那麼try語句丟擲異常之後,就會立馬被catch捕獲並執行其中的程式碼。如果有finally語句,且沒有catch語句,try語句丟擲異常,然後執行finally語句,最後再將異常以異常的方式繼續往上拋,最終的處理參閱window.onerror用法一章節。
程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼(function(){ try{ done(); } catch(e){ console.log(e.name); console.log(e.message); } finally{ console.log("finally"); } })()
以上程式碼是一個try...catch...finally語句的應用,同時我們看到引數e為我們提供很多資訊,它是一個物件,類似於事件物件,下面就對它做一下介紹。
三.Error物件:
目前可能得到的系統異常主要包含以下6種:
[JavaScript] 純文字檢視 複製程式碼EvalError: raised when an error occurs executing code in eval() RangeError: raised when a numeric variable or parameter is outside of its valid range ReferenceError: raised when de-referencing an invalid reference SyntaxError: raised when a syntax error occurs while parsing code in eval() TypeError: raised when a variable or parameter is not a valid type URIError: raised when encodeURI() or decodeURI() are passed invalid parameters
上面的六種異常物件都繼承自Error物件。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼new Error(); new Error("異常資訊");
Error物件屬性:
(1).description: 錯誤描述 (僅IE可用).
(2).fileName: 出錯的檔名 (僅Mozilla可用).
(3).lineNumber: 出錯的行數 (僅Mozilla可用).
(4).message: 錯誤資訊 (在IE下同description)
(5).name: 錯誤型別.
(6).number: 錯誤程式碼 (僅IE可用).
(7).stack: 像Java中的Stack Trace一樣的錯誤堆疊資訊 (僅Mozilla可用).
四.手工丟擲異常資訊:
除了獲取系統的異常資訊,我們也可以手痛丟擲自定義異常資訊,這裡就要用到throw語句。
語法結構:
[JavaScript] 純文字檢視 複製程式碼throw expression;
expression可以是任何型別物件例項。通常情況下丟擲一個Error物件或是Error物件的子類例項。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼(function(){ try{ throw new Error("螞蟻部落自定義"); } catch(e){ console.log(e.name); console.log(e.message); } finally{ console.log("finally"); } })()
丟擲的是一個Error物件例項。
[JavaScript] 純文字檢視 複製程式碼執行程式碼(function(){ try{ throw new String("螞蟻部落");; } catch(e){ console.log(e.length); } finally{ console.log("finally"); } })()
丟擲的是一個字串物件例項。
相關文章
- JavaScript try/catch/finally 語句JavaScript
- Java try catch finallyJava
- Java try catch finally 總結Java
- try throw catch 語句檢測input值
- Will it finally: 關於 try/catch 的一些細節
- 【轉】java中異常與try catch finally詳解Java
- Java中的try、catch、finally塊簡單的解析Java
- c# 異常處理try catch finally_throwC#
- JavaScript錯誤_throw、try和catchJavaScript
- try-catch-finally,被你忽略掉的執行順序
- Java含有return 的try catch finally的執行順序Java
- C++異常處理:try,catch,throw,finally的用法C++
- c#之異常處理tcbs_try_catch_finallyC#
- 使用 TRY/CATCH 語句解決 SQL Server 2005 死鎖SQLServer
- JAVA的異常處理機制(一)——try...catch...finallyJava
- Laravel try catchLaravel
- js try catchJS
- 有return的情況下try catch finally的執行順序
- (轉)有return的情況下try catch finally的執行順
- 關於Java中try-catch-finally-return的執行順序Java
- [CareerCup] 14.2 Try-catch-finally Java中的異常處理Java
- [Java基礎]try-catch-finally 和 return 的執行順序Java
- C++及Windows異常處理(try,catch; __try,__finally; __try, __except)——一道筆試題引起的探究C++Windows筆試
- Effective C#:利用using和try/finally語句來清理資源C#
- iOS的@try、@catch()iOS
- JavaScript 中 try...catch 的 10 個使用技巧JavaScript
- Java的finally語句Java
- 解決程式碼中重複的捕獲 promise 錯誤的 try catch 語句Promise
- Java趣味分享:try/finallyJava
- try/catch/finally:“前端的好厚米,我覺得你們不夠了解我呀~”前端
- c++ try catch 問題C++
- (十四).try-throw-catch機制
- js中try和catch的用法JS
- 微軟:請不要使用 Try/Catch微軟
- java中try catch塊的使用Java
- 【C#之Try……Catch例項】C#
- python怎麼寫try語句Python
- 有return的情況下try catch finally的執行順序(最有說服力的總結)