更新於 2024/06/14閱讀時間約 5 分鐘

Typescript入門-Day9:例外處理

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

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

語法

在 TypeScript 中,例外處理語句使用 try...catch...finally 塊來捕獲和處理異常。

try {
// 可能發生錯誤的代碼
} catch (error) {
// 處理錯誤的代碼
} finally {
// 無論是否發生錯誤都會執行的代碼
}

示例

try {
let result = riskyOperation();
console.log(result);
} catch (error) {
console.error("An error occurred:", error.message);
} finally {
console.log("This will always execute");
}

常見異常類型

在 TypeScript 中,常見的異常類型包括:

  • RangeError: 當數值不在預期範圍內時引發。
  • ReferenceError: 當引用一個不存在的變量時引發。
  • SyntaxError: 當語法錯誤時引發。
  • TypeError: 當變量或參數不是預期的類型時引發。
  • URIError: 當使用 encodeURIdecodeURI 時遇到錯誤的 URI 時引發。

示例

try {
// RangeError 示例
let num = new Array(-1);
} catch (error) {
console.error("RangeError:", error.message);
}

try {
// ReferenceError 示例
console.log(nonExistentVariable);
} catch (error) {
console.error("ReferenceError:", error.message);
}

try {
// SyntaxError 示例
eval('foo bar');
} catch (error) {
console.error("SyntaxError:", error.message);
}

try {
// TypeError 示例
null.f();
} catch (error) {
console.error("TypeError:", error.message);
}

try {
// URIError 示例
decodeURI('%');
} catch (error) {
console.error("URIError:", error.message);
}

主動觸發異常訊息

可以使用 throw 關鍵字主動引發異常訊息。

function riskyOperation() {
throw new Error("Something went wrong");
}

try {
riskyOperation();
} catch (error) {
console.error(error.message); // Something went wrong
}

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

可以創建自定義的異常類型,並在需要時引發這些自定義異常。

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

function riskyOperation() {
throw new CustomError("This is a custom error");
}

try {
riskyOperation();
} catch (error) {
if (error instanceof CustomError) {
console.error("CustomError caught:", error.message);
} else {
console.error("An unexpected error occurred:", error.message);
}
}

通過上述方式,可以有效地在 TypeScript 中處理各種異常情況,並確保程序在面對錯誤時能夠優雅地處理並提供有意義的錯誤訊息。

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