如何在 TypeScript 中解决过多的 try catch?


我们可以使用 try-catch 语句来解决 TypeScript 中的错误。有时,我们需要在代码中添加多个 try-catch 块来处理多个错误。

当我们在代码中添加多个 try-catch 语句时,代码变得难以阅读,并且开发人员重构起来很头疼。在本教程中,我们将学习如何将过多的 try-catch 块转换为单个 try-catch 块,该块可以管理多个错误。

语法

用户可以按照以下语法在 TypeScript 中使用单个 try-catch 块。

try {
   throw new Error("error_message");
   // this code will not be executed
}
catch (error) {
   // manage the error
}

在以上语法中,我们在 try 块内抛出错误,并在 catch 块中捕获错误。

每当我们在 try 块中遇到任何错误时,执行控制都会直接转到 catch 语句,而不会执行其他 try 块代码。

示例 1:过多的 try-catch 块

在下面的示例中,我们添加了四个 try-catch 块。我们从每个 try-catch 块抛出带有不同消息的错误。

用户可以在输出中看到从每个 catch 块打印的错误消息。

try {
   console.log("Inside the first try block");
   throw new Error("first error message");
} catch (error) {
   console.log(error.message);
}

try {
   console.log("Inside the second try block");
   throw new Error("second error message");
} catch (error) {
   console.log(error.message);
}

try {
   console.log("Inside the third try block");
   throw new Error("Third error message");
} catch (error) {
   console.log(error.message);
}

try {
   console.log("Inside the fourth try block");
   throw new Error("Fourth error message");
} catch (error) {
   console.log(error.message);
}

编译后,它将生成以下 JavaScript 代码。

try {
   console.log("Inside the first try block");
   throw new Error("first error message");
}
catch (error) {
   console.log(error.message);
}
try {
   console.log("Inside the second try block");
   throw new Error("second error message");
}
catch (error) {
   console.log(error.message);
}
try {
   console.log("Inside the third try block");
   throw new Error("Third error message");
}
catch (error) {
   console.log(error.message);
}
try {
   console.log("Inside the fourth try block");
   throw new Error("Fourth error message");
}
catch (error) {
   console.log(error.message);
}

输出

以上代码将产生以下输出 –

Inside the first try block
first error message
Inside the second try block
second error message
Inside the third try block
Third error message
Inside the fourth try block
Fourth error message

从以上示例中,用户可以理解当我们在单个代码中使用过多的 try-catch 语句时,代码如何变得难以阅读和不清楚。

现在,我们将学习如何使用单个 try-catch 块来处理具有不同错误的多个代码块。

示例 2

在下面的示例中,我们创建了 solveProblems() 函数。它以函数作为参数,并在 try 块中调用该函数。如果函数抛出任何错误,我们可以在单个块中捕获它。

function func2() {
   throw new Error("This error is from second function!");
}

function func3() {
   let num = 10;
   num.toPrecision(1000);
}
function solveProblems(func: any) {
   // calling the callback function in the try block
   try {
      func();
   } catch (error) {
      console.log(error.message);
   }
}

// calling functions
solveProblems(func2);
solveProblems(func3);

编译后,它将生成以下 JavaScript 代码 −

function func2() {
   throw new Error("This error is from second function!");
}
function func3() {
   var num = 10;
   num.toPrecision(1000);
}
function solveProblems(func) {
   // calling the callback function in the try block
   try {
      func();
   }
   catch (error) {
      console.log(error.message);
   }
}
// calling functions
solveProblems(func2);
solveProblems(func3);

输出

以上代码将产生以下输出 –

This error is from second function!
toPrecision() argument must be between 1 and 100

从以上示例中,用户可以理解如何通过用单个 try-catch 块替换它来移除多个 try-catch 块。用户只需要为每个单独的代码块创建一个单独的函数,并且可以在单个 try 块中依次调用每个函数。

更新于: 2023年2月21日

953 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告