一攒发、JavaScript遇到錯(cuò)誤
當(dāng) JavaScript 引擎執(zhí)行 JavaScript 代碼時(shí),會(huì)發(fā)生各種錯(cuò)誤晋南。
- 可能是語法錯(cuò)誤惠猿,通常是程序員造成的編碼錯(cuò)誤或錯(cuò)別字。
- 可能是拼寫錯(cuò)誤或語言中缺少的功能(可能由于瀏覽器差異)负间。
- 可能是由于來自服務(wù)器或用戶的錯(cuò)誤輸出而導(dǎo)致的錯(cuò)誤偶妖。
- 可能是由于許多其他不可預(yù)知的因素。
二政溃、JavaScript拋出錯(cuò)誤
當(dāng)錯(cuò)誤發(fā)生時(shí)趾访,當(dāng)事情出問題時(shí),JavaScript 引擎通常會(huì)停止執(zhí)行董虱,并拋出一個(gè)錯(cuò)誤消息扼鞋。
使用 throw語句也可以創(chuàng)建自定義消息(拋出異常),下文會(huì)介紹到throw語句的用法愤诱。
三云头、try...catch...finally結(jié)構(gòu)
try/catch/finally 語句用于處理代碼中可能出現(xiàn)的錯(cuò)誤信息。
【1】定義和用法
try語句:定義在執(zhí)行時(shí)進(jìn)行錯(cuò)誤測試的代碼塊淫半。
catch語句:定義當(dāng) try 代碼塊發(fā)生錯(cuò)誤時(shí)溃槐,所執(zhí)行的代碼塊。
finally語句:在 try 和 catch 之后科吭,無論try和catch結(jié)果有無異常都會(huì)執(zhí)行昏滴。
注意: catch 和 finally 語句都是可選的,但你在使用 try 語句時(shí)必須至少使用其中一個(gè)对人。
1谣殊、 事情還有得挽回, 換條路走
try {
// 執(zhí)行某個(gè)邏輯,沒出錯(cuò)牺弄,則按流程正常執(zhí)行
} catch (err) {
//出問題了姻几, 換個(gè)邏輯執(zhí)行
} finally {
// 可選,無論try/catch結(jié)果如何都會(huì)執(zhí)行的代碼塊
}
2、 體面的退出
try {
// 執(zhí)行某個(gè)邏輯,沒出錯(cuò)鲜棠,則按流程正常執(zhí)行
} catch (err) {
// 出問題了肌厨,彈個(gè)框告訴用戶出錯(cuò)了培慌,終止執(zhí)行
// err參數(shù)就是拋出的錯(cuò)誤信息
} finally {
// 可選豁陆,無論try/catch結(jié)果如何都會(huì)執(zhí)行的代碼塊
}
【2】案例
try {
let params = {
page: 1,
size: 10
}
let queryResult = await getOfferSheet(params);
this.$alert('操作成功');
} catch (err) {
this.$alert(err);
}
// 如上案例是通過調(diào)用一個(gè)api接口,處理成功返回200吵护,則彈出操作成功盒音,如果報(bào)錯(cuò),則跳到catch代碼塊彈出錯(cuò)誤信息框提示用戶出問題了
四馅而、throw 語句
throw 語句允許我們創(chuàng)建自定義錯(cuò)誤祥诽。throw 語句的作用是手動(dòng)中斷程序執(zhí)行,創(chuàng)建并拋出一個(gè)異常瓮恭,異承燮海可以是 JavaScript 字符串、數(shù)字屯蹦、邏輯值或?qū)ο蟆?/p>
【1】語法
// 拋出一個(gè)字符串
throw 'Error维哈!'; // Uncaught Error!
// 拋出一個(gè)數(shù)值
throw 404; // Uncaught 404
// 拋出一個(gè)布爾值
throw true; // Uncaught true
// 拋出一個(gè)對(duì)象
throw {
toString: function () {
return 'Error!';
}
}; // Uncaught {toString: ?}
【2】案例
if (x < 0) {
throw new Error('x必須為正數(shù)'); // 或者換成 throw 'x必須為正數(shù)'
}
// 上面代碼中登澜,如果變量x小于0阔挠,就手動(dòng)拋出一個(gè)錯(cuò)誤,告訴用戶x的值不正確脑蠕,整個(gè)程序就會(huì)在這里中斷執(zhí)行购撼。可以看到谴仙,throw拋出的錯(cuò)誤就是它的參數(shù)'x必須為正數(shù)'
五迂求、注意
如果把 throw 與 try 和 catch 一起使用,那么您能夠控制程序流晃跺,并生成自定義的錯(cuò)誤消息锁摔。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
</style>
</head>
<body>
<p>請(qǐng)輸出一個(gè) 1 到 10 之間的數(shù)字:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">測試輸入</button>
<p id="message"></p>
<script>
function myFunction() {
var message, x;
message = document.getElementById("message");
message.innerHTML = "";
x = document.getElementById("demo").value;
try {
if (x == "") throw "值為空";
if (isNaN(x)) throw "不是數(shù)字";
x = Number(x);
if (x < 1) throw "太小";
if (x > 10) throw "太大";
} catch (err) {
message.innerHTML = "錯(cuò)誤: " + err;
}
}
</script>
</body>
</html>