無論是什么編程語言,異常處理都是非常重要的。JavaScript 異常處理也不例外。在 JavaScript 中,當(dāng)代碼運(yùn)行過程中出現(xiàn)異常,程序可能會崩潰。因此,處理異常就顯得尤為重要。
舉個(gè)例子,假設(shè)你正在編寫一個(gè)購物車網(wǎng)站,如果用戶在提交訂單時(shí)輸入了無效的信用卡信息,程序就可能會崩潰。此時(shí),你需要對這種異常情況進(jìn)行處理,例如提示用戶重新輸入信用卡信息。
JavaScript 捕獲異常并處理異常的方式有很多,以下是其中幾種常見的方式。
try...catch
try { // 可能會拋出異常的代碼 } catch (e) { // 處理異常的代碼 }
try...catch 語句包含兩部分:try 和 catch。try 代碼塊中寫入可能會拋出異常的代碼。如果代碼拋出異常,catch 代碼塊就會被執(zhí)行。
throw
if (somethingIsWrong) { throw new Error("Something is wrong."); }
使用 throw 關(guān)鍵字可以在代碼中拋出異常。在上述代碼中,如果 somethingIsWrong 變量的值為 true,就會拋出一個(gè)錯(cuò)誤。
finally
try { // 可能會拋出異常的代碼 } catch (e) { // 處理異常的代碼 } finally { // 不管有沒有發(fā)生異常,這里的代碼都會執(zhí)行 }
finally 代碼塊里的代碼不管有沒有異常都會執(zhí)行。
onerror
window.onerror = function(message, source, lineno, colno, error) { // 處理錯(cuò)誤的代碼 };
onerror 方法可以在全局范圍內(nèi)監(jiān)聽異常,當(dāng) JavaScript 引擎拋出異常時(shí),這個(gè)方法會被調(diào)用。onerror 方法的第一個(gè)參數(shù)是錯(cuò)誤信息,第二個(gè)參數(shù)是引起錯(cuò)誤的 JavaScript 源文件的 URL,第三個(gè)參數(shù)是行號,第四個(gè)參數(shù)是列號,最后一個(gè)參數(shù)是錯(cuò)誤對象。可以使用這些信息來記錄錯(cuò)誤和進(jìn)行故障排除。
自定義異常
function InvalidCardError(message) { this.message = message; this.name = "InvalidCardError"; } throw new InvalidCardError("Invalid card number.");
你也可以自定義異常。在上面的例子中,我們定義了一個(gè)叫做 InvalidCardError 的異常,當(dāng)信用卡信息無效時(shí),就會拋出這個(gè)異常。
在實(shí)際編程中,異常處理是必不可少的。上述介紹的幾種 JavaScript 異常處理方式可以幫助你更好地處理異常情況,使你的程序更加健壯。