js try catch
<script language="javascript">
try
{
throw new Error(10,"asdasdasd")
}
catch (e)
{
alert(e.message);
alert(e.description)
alert(e.number)
alert(e.name)
throw new Error(10,"asdasdasd")
}
< /script>
在JavaScript可以使用try...catch來進行異常處理。例如:
try { foo.bar(); } catch (e) { alert(e.name + ": " + e.message); }
目前我們可能得到的系統異常主要包含以下6種:
- 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物件。他們都支援以下兩種構造方法:
new Error(); new Error("異常資訊");
手工丟擲異常的方法如下:
try { throw new Error("Whoops!"); } catch (e) { alert(e.name + ": " + e.message); }
如要判斷異常資訊的型別,可在catch中進行判斷:
try { foo.bar(); } catch (e) { if (e instanceof EvalError) { alert(e.name + ":" + e.message); } else if (e instanceof RangeError) { alert(e.name + ": " + e.message); } // etc }
Error具有下面一些主要屬性:
- description: 錯誤描述 (僅IE可用).
- fileName: 出錯的檔名 (僅Mozilla可用).
- lineNumber: 出錯的行數 (僅Mozilla可用).
- message: 錯誤資訊 (在IE下同description)
- name: 錯誤型別.
- number: 錯誤程式碼 (僅IE可用).
- stack: 像Java中的Stack Trace一樣的錯誤堆疊資訊 (僅Mozilla可用).
因此為了更好的瞭解錯誤資訊我們可以將catch部分改為如下形式:
try { foo.bar(); } catch (e) { if (browserType != BROWSER_IE) { alert("name: " + e.name + "message: " + e.message + "lineNumber: " + e.lineNumber + "fileName: " + e.fileName + "stack: " + e.stack); } else { alert("name: " + e.name + "errorNumber: " + (e.number & 0xFFFF ) + "message: " + e.message"); } }
JavaScript中的throw命令事實上可以丟擲任何物件,並且我們可以在catch接受到此物件。例如:
try { throw new Date(); // 丟擲當前時間物件 } catch (e) { alert(e.toLocaleString()); // 使用本地格式顯示當前時間 }
相關文章
- js中try和catch的用法JS
- Laravel try catchLaravel
- JS 使用try catch捕獲異常JS
- iOS的@try、@catch()iOS
- NodeJS 實戰系列:如何設計 try catchNodeJS
- Nodejs try catch捕捉異常失效場景NodeJS
- Java try catch finallyJava
- c++ try catch 問題C++
- (十四).try-throw-catch機制
- JavaScript try catch finally 語句JavaScript
- JavaScript錯誤_throw、try和catchJavaScript
- Java try catch finally 總結Java
- JavaScript try/catch/finally 語句JavaScript
- 微軟:請不要使用 Try/Catch微軟
- java中try catch塊的使用Java
- 【C#之Try……Catch例項】C#
- Java之異常處理try{}catch(){}Java
- Java中try()catch{}的使用方法Java
- try throw catch 語句檢測input值
- java try(){}catch(){}自動資源釋放Java
- IDEA 自動生成try,catch快捷鍵Idea
- c++中的try-catch及throwC++
- Java之try-catch和throws的區別Java
- JavaScript 中 try...catch 的 10 個使用技巧JavaScript
- SQL SERVER 裡的錯誤處理(try catch)SQLServer
- 在 SQL Server 中使用 Try Catch 處理異常SQLServer
- 前端魔法堂——異常不僅僅是try/catch前端
- c# throw及try_catch關聯測試C#
- try catch 對程式碼執行的效能影響
- Sqlserver Try Catch時Catch捕獲到錯誤則重試一次的寫法SQLServer
- Will it finally: 關於 try/catch 的一些細節
- 異常-try...catch的方式處理異常1
- 異常-try...catch的方式處理異常2
- 無需寫try/catch,也能正常處理異常
- 【轉】java中異常與try catch finally詳解Java
- Java中的try、catch、finally塊簡單的解析Java
- c# 異常處理try catch finally_throwC#
- C++及Windows異常處理(try,catch; __try,__finally; __try, __except)——一道筆試題引起的探究C++Windows筆試