javascript
062_JavaScript异常
1. try語句使您能夠測試代碼塊中的錯誤。
2. catch語句允許您處理錯誤。
3. throw語句允許您創建自定義錯誤。
4. finally在try和catch之后, 無論結果如何, 使您能夠執行代碼。
5. try和catch
5.1. try語句允許您定義一個代碼塊, 以便在執行時檢測錯誤。
5.2. 如果try代碼塊中發生錯誤, catch語句允許你定義一個要執行的代碼塊。
5.3. JavaScript語句try和catch成對出現:
try {供測試的代碼塊 } catch(err) {處理錯誤的代碼塊 }6. throw語句
6.1. throw語句允許您創建自定義錯誤。
6.2. 自定義錯誤可以是字符串、數字、布爾或對象。
6.3. 如果把throw與try和catch一同使用, 就可以控制程序流并生成自定義錯誤消息。
7. finally語句
7.1. finally語句允許您在try和catch之后執行代碼, 無論結果如何:
try {供測試的代碼塊 } catch(err) {處理錯誤的代碼塊 } finally {無論try/catch結果如何都執行的代碼塊 }8. Error對象
8.1. JavaScript擁有當錯誤發生時提供錯誤信息的error對象。
8.2. error對象提供兩個有用的屬性: name和message。
8.3. Error對象屬性
9. Error的name屬性
9.1. error的name屬性可返回六個不同的值:
10. EvalError錯誤
10.1. 錯誤調用eval()函數中的發生EvalError錯誤。
10.2. 更新版本的JavaScript不會拋出任何EvalError。使用其它幾個錯誤代替。
11. RangeError錯誤
11.1. RangeError會在您使用了合法值的范圍之外的數字時拋出。
function myRangeError(){try {var num = 1;num.toPrecision(500); // 數無法擁有500個有效數}catch(err) {document.getElementById("showError").innerHTML = err.name + ': ' + err.message;} }12. ReferenceError錯誤
12.1. 假如您使用(引用)了尚未聲明的變量, 則ReferenceError會被拋出:
function myReferenceError(){try {var x = y + 1; // y無法被引用}catch(err) {document.getElementById("showError").innerHTML = err.name + ': ' + err.message;} }13. SyntaxError錯誤
13.1. 如果編寫代碼語法不對, 會SyntaxError被拋出:
function mySyntaxError(){try {eval("var num = 2; isNaN(num) ? throw '這里居然是語法錯誤' : +num;");}catch(err) {document.getElementById("showError").innerHTML = err.name + ': ' + err.message;} }14. TypeError錯誤
14.1. 假如您使用的值不在期望值的類型, 則TypeError被拋出:
function myTypeError(){try {var num = 3;num.toUpperCase(); // 您無法將數字轉換為大寫}catch(err) {document.getElementById("showError").innerHTML = err.name + ': ' + err.message;} }15. URIError錯誤
15.1. 假如您在URI函數中使用非法字符, 則URIError被拋出:
function myURIError(){try {decodeURI("%%%"); // 您無法對這些百分號進行URI編碼}catch(err) {document.getElementById("showError").innerHTML = err.name + ': ' + err.message;} }16. 例子
<!DOCTYPE html> <html><head><meta charset="utf-8" /><title>JavaScript異常</title></head><body><script type="text/javascript">function Calculator(){}Calculator.Add = function(p1, p2){if(p1 === ''){throw {name: 'TypeError', message: '第一個參數是空字符串'};}if(isNaN(p1)){throw {name: 'TypeError', message: p1 + '不是數字'};}if(p2 === ''){throw {name: 'TypeError', message: '第二個參數是空字符串'};}if(isNaN(p2)){throw {name: 'TypeError', message: p2 + '不是數字'};}var result = (+p1) + (+p2);if(result === Infinity){throw {name: 'RangeError', message: '計算結果太大'};}if(result === -Infinity){throw {name: 'RangeError', message: '計算結果太小'};}return result;}function doAdd(){var p1 = document.getElementById('p1').value;var p2 = document.getElementById('p2').value;try {document.getElementById("result").innerHTML = Calculator.Add(p1, p2);}catch(err) {document.getElementById("result").innerHTML = err.name + ': ' + err.message;}finally {p1 = null;p2 = null;}}function myRangeError(){try {var num = 1;num.toPrecision(500); // 數無法擁有500個有效數}catch(err) {document.getElementById("showError").innerHTML = err.name + ': ' + err.message;}}function myReferenceError(){try {var x = y + 1; // y無法被引用}catch(err) {document.getElementById("showError").innerHTML = err.name + ': ' + err.message;}} function mySyntaxError(){try {eval("var num = 2; isNaN(num) ? throw '這里居然是語法錯誤' : +num;");}catch(err) {document.getElementById("showError").innerHTML = err.name + ': ' + err.message;}} function myTypeError(){try {var num = 3;num.toUpperCase(); // 您無法將數字轉換為大寫}catch(err) {document.getElementById("showError").innerHTML = err.name + ': ' + err.message;}} function myURIError(){try {decodeURI("%%%"); // 您無法對這些百分號進行URI編碼}catch(err) {document.getElementById("showError").innerHTML = err.name + ': ' + err.message;}} </script><input type="text" id="p1" /> + <input type="text" id="p2" /> = <span id="result"></span> <br /> <br /><span id="showError" style="color: red;"></span> <br /> <br /><button onclick="doAdd()">計算加法</button><button onclick="myRangeError()">RangeError</button><button onclick="myReferenceError()">ReferenceError</button><button onclick="mySyntaxError()">SyntaxError</button><button onclick="myTypeError()">TypeError</button><button onclick="myURIError()">URIError</button></body> </html>總結
以上是生活随笔為你收集整理的062_JavaScript异常的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 095_RegExp对象
- 下一篇: 063_提升Hoisting
