2024-06-03|閱讀時間 ‧ 約 26 分鐘

Javascript入門-Day9:例外處理

為什麼要使用「例外處理」

  • 提高程式的可靠性: 通過處理異常,我們可以避免程式因為異常情況而崩潰或產生未預期的行為,從而提高程式的可靠性。
  • 提供更好的反饋: 使用例外處理可以提供更具描述性的錯誤訊息,幫助開發者快速定位並修復問題。
  • 增加程式的容錯性: 通過捕獲和處理異常,我們可以使程式在面對錯誤時優雅地回退或提供替代方案,從而增加程式的容錯性。
  • 改善程式的可讀性: 通過將異常處理代碼與正常業務邏輯分離,可以使程式的結構更清晰、更易於理解。

語法

簡單範例

try {
// 可能引發異常的代碼塊
let result = 10 / 0; // 引發除以零的異常
} catch (error) {
// 異常處理代碼塊
console.error('An error occurred:', error.message);
}

使用多個 catch 塊來處理多種異常

try {
// 可能引發異常的代碼塊
throw new Error('Some error occurred');
} catch (error) {
// 異常處理代碼塊
console.error('An error occurred:', error.message);
} catch (anotherError) {
// 另一種異常的處理代碼塊
console.error('Another error occurred:', anotherError.message);
}

使用 finally 區塊

finally 區塊中的代碼無論是否引發異常都會執行,通常用於釋放資源或清理工作。

try {
// 可能引發異常的代碼塊
console.log('Try block executed');
} catch (error) {
// 異常處理代碼塊
console.error('An error occurred:', error.message);
} finally {
// 無論是否引發異常都會執行的清理代碼塊
console.log('Finally block executed');
}

常見異常類型

JavaScript 中的常見異常類型包括:

  • Error:通用錯誤類型。
  • SyntaxError:語法錯誤。
  • ReferenceError:引用錯誤,當試圖訪問未定義的變量時引發。
  • TypeError:類型錯誤,當試圖對不支持的操作數據類型進行操作時引發。
  • RangeError:範圍錯誤,當使用不在函數接受的範圍內的數值引發。

主動觸發異常訊息

我們可以使用 throw 關鍵字主動觸發異常。

function divide(a, b) {
if (b === 0) {
throw new Error('Division by zero is not allowed');
}
return a / b;
}

try {
console.log(divide(10, 0));
} catch (error) {
console.error('An error occurred:', error.message);
}

主動觸發用戶自定義異常訊息

class CustomError extends Error {
constructor(message) {
super(message);
this.name = 'CustomError';
}
}

function process() {
throw new CustomError('Custom error occurred');
}

try {
process();
} catch (error) {
if (error instanceof CustomError) {
console.error('Custom error occurred:', error.message);
} else {
console.error('An error occurred:', error.message);
}
}

這些是使用例外處理的一些常見原因和方法,它們有助於提高程式的穩定性和可靠性,同時提供更好的錯誤訊息和更優雅的錯誤處理機制。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.