在 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
: 當使用 encodeURI
或 decodeURI
時遇到錯誤的 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 中處理各種異常情況,並確保程序在面對錯誤時能夠優雅地處理並提供有意義的錯誤訊息。