Appearance
错误处理
在TypeScript中,异常处理的方式与JavaScript一致。TypeScript基于JavaScript并添加了静态类型检查,但在异常处理方面并没有引入新的机制或语法。因此,可以使用try-catch语句来捕获和处理异常。
TypeScript中的异常处理与JavaScript相同,使用try-catch语句来捕获和处理异常。通过使用try块、catch块和可能的finally块,我们可以以结构化的方式处理可能抛出的异常,并在发生异常时采取适当的措施。
以下是在TypeScript中使用try-catch语句进行异常处理
ts
try {
// 可能抛出异常的代码块
// ...
throw new Error("Something went wrong."); // 抛出一个自定义异常
} catch (error) {
// 异常处理代码块
console.log("An error occurred:", error.message);
}在try块中,我们可以包含可能抛出异常的代码。如果在try块中发生任何异常,控制流将立即转到catch块。catch块中的参数(本例中的error)表示捕获到的异常对象。我们可以使用该参数来访问与异常相关的信息,例如异常的消息(error.message)。
如果try块中没有抛出异常,catch块将被跳过,程序将继续执行try-catch语句后面的代码。
此外,也可以使用finally块来执行无论是否发生异常都需要执行的清理代码。finally块中的代码在try-catch块中的代码执行完成后始终执行,无论是否捕获到异常。
ts
try {
// 可能抛出异常的代码块
// ...
} catch (error) {
// 异常处理代码块
console.log("An error occurred:", error.message);
} finally {
// 清理代码块,始终执行
console.log("Cleanup code here.");
}异常处理小妙招
自定义异常类:在处理异常时,可以自定义异常类来表示特定类型的异常。通过创建自定义异常类,可以提供更多的异常信息,并捕获特定类型的异常。
ts
class CustomError extends Error {
constructor(message: string) {
super(message);
this.name = "CustomError";
}
}
try {
throw new CustomError("This is a custom error.");
} catch (error) {
if (error instanceof CustomError) {
console.log("Custom error occurred:", error.message);
} else {
console.log("Unknown error occurred.");
}
}抛出具体类型的异常:可以根据实际情况和异常的类型,抛出具体类型的异常。这样可以使异常处理更具可读性,并在捕获异常时更方便地处理。
typescript
function divide(a: number, b: number): number {
if (b === 0) {
throw new Error("Division by zero.");
}
return a / b;
}
try {
let result = divide(8, 0);
console.log("Result:", result);
} catch (error) {
if (error instanceof Error && error.message === "Division by zero.") {
console.log("Cannot divide by zero.");
} else {
console.log("Unknown error occurred.");
}
}使用断言函数处理异常:可以使用断言函数来为特定的异常添加额外的条件或处理逻辑。通过在try块内使用断言函数,可以在异常抛出前进行预处理或检查。
ts
function assertPositiveNumber(value: number): asserts value is number {
if (typeof value !== "number" || value <= 0) {
throw new Error("The value must be a positive number.");
}
}
try {
let num: number = -5;
assertPositiveNumber(num);
console.log("Valid number:", num);
} catch (error) {
console.log("Error occurred:", error.message);
}处理异步函数的异常:在处理异步函数的异常时,可以使用try-catch包装async/await或Promise中的相关代码块。一般来说异步日志中,十分实用。 异常处理中,try-catch语句可以捕获异步函数中的异常,并在异常发生时执行相应的处理逻辑。
typescript
async function fetchData() {
try {
let response = await fetch('https://example.com/data');
let data = await response.json();
console.log("Fetched data:", data);
} catch (error) {
console.log("Error occurred while fetching data:", error.message);
}
}
fetchData();