处理 TypeScript 中的错误

typescriptserver side programmingprogramming

TypeScript 和 JavaScript 等函数式编程语言提供了一种使用 try-catch 块处理错误的方法。try 块捕获错误,catch 块处理错误。在本教程中,我们将学习如何处理 TypeScript 中的错误。

TypeScript 中的错误主要有 7 种类型。在这里,我们将逐一学习所有类型的错误。

  • 范围错误 - 如果我们尝试访问范围之外的任何内容,TypeScript 将抛出范围错误。例如,访问大数值(如 10^100)的数组索引。

  • 引用错误 - 如果我们尝试访问变量而不声明它,TypeScript 将抛出引用错误。例如,在不声明字符串变量的情况下,对该变量应用 toLowerCase() 方法。

  • 语法错误 − 如果我们使用错误的语法编写代码,TypeScript 会抛出语法错误。例如,10***10 是一个语法错误,因为 *** 在 TypeScript 中不代表任何运算符。

  • 类型错误 − 由于变量类型不匹配而发生。例如,使用 TypeScript 中的 Math.ceil() 方法删除字符串变量的小数部分。

  • URI 错误 − 在 TypeScript 中编码或解码 URI 时可能会发生这种情况。例如,将无效参数传递给 decryptURI() 函数会返回 URI 错误。

  • Eval 错误 − 在 TypeScript 中使用 eval() 函数时会发生这些错误。我们可以使用 eval() 函数来评估表达式。

  • 内部错误 - 这种错误发生在内部。例如,如果堆栈大小超出限制,则可能会发生这种情况。

我们已经研究了不同类型的错误。现在,我们将学习使用 try、catch 和 finally 块处理错误。

使用 try、catch 和 finally 块

第一个问题出现了 - try、catch 和 finally 块是什么?try 块可以包含带有错误的代码。如果发生任何错误,它会抛出错误并从发生错误的行停止执行代码。

顾名思义,catch 块用于捕获和处理错误。我们可以根据不同的 eros 编写代码来处理 catch 块中的错误。一个 try 块可以有多个 catch 块。我们可以创建不同的 catch 块来处理不同类型的错误,例如语法错误和引用错误。

finally 块包含程序终止前始终需要执行的代码。例如,关闭数据库连接或关闭文件,这些代码在发生错误之前我们在 try 块中打开。

语法

用户可以按照以下语法使用 try、catch 和 finally 块。

try {
   //  有错误的代码
} catch {
  // 处理错误
} finally {
  // 在程序终止前执行代码
}

示例 1

在下面的示例中,我们演示了如何使用 try-catch 块来处理 TypeScript 中的错误。在 try 块中,我们通过创建错误的新实例来抛出错误。catch 块通过在屏幕上打印一些消息和错误来捕获并处理该错误。此外,用户可以在输出中看到"try 块结束"消息未打印,因为它写在发生错误后的行中。

try {
  // 这应该会产生语法错误。
  throw new SyntaxError("语法内发生错误。");
  //   此代码不会执行。
  console.log("try 块结束");
} catch (error) {
  // 从 try 块抛出错误后,控制将位于此处。
   console.log("Inside the catch block.");
   console.log("The error is " + error);
}

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

try {
    // 这应该会产生语法错误。
    throw new SyntaxError("语法内部发生错误。");
    // 此代码不会执行。
    console.log("try 块结束");
}
catch (error) {
    // 从 try 块抛出错误后,控制将在此处。
    console.log("catch 块内部。");   console.log("The error is " + error);
}

输出

上述代码将产生以下输出 −

在 catch 块内。
The error is SyntaxError: Error occured inside the syntax.

示例 2

在下面的示例中,我们在 try 块内创建了函数。它需要两个参数。第一个参数可以是任何值;另一个参数应该是数字。此外,它始终返回数字或 ReferenceError 对象。

在 errofunc() 函数中,我们检查如果两个参数都是数字,则返回数字的总和;否则,返回错误。在输出中,我们可以看到第一个函数调用将正确执行,而第二个函数调用将产生错误。

try {
   // 创建返回数字或错误的函数
   function errorfunc(num1, num2: number): number | ReferenceError {
      // 如果两个参数都是数字类型,则返回加法。
      // 否则抛出引用错误。
      if (typeof num1 == "number" && typeof num2 == "number") {
         console.log(num1 + num2);
      }
      // 抛出引用错误的新实例。
      throw new ReferenceError("Parameter/s are not type of numbers.");
   }
   // 这将引发错误。
   errorfunc("11", 12);
} catch (error) {
   console.log("Inside the catch block.");
   console.log("The error is " + error);
} finally {
   // 这将始终执行
   console.log(
      "Inside the finally block to execute the code before program termination."
   );
}

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

try {
   // 创建返回数字或错误的函数
   function errorfunc(num1, num2) {
      // 如果两个参数都是数字类型,则返回加法。
      // 否则抛出引用错误。
      if (typeof num1 == "number" && typeof num2 == "number") {
         console.log(num1 + num2);
      }
      // 抛出引用错误的新实例。
      throw new ReferenceError("Parameter/s are not type of number.");
   }
   // 这将引发错误。
   errorfunc("11", 12);
}
catch (error) {
   console.log("Inside the catch block.");
   console.log("The error is " + error);
}
finally {
   // 这将始终执行
   console.log("Inside the finally block to execute the code before program termination.");
}

输出

上述代码将产生以下输出 -

Inside the catch block.
The error is ReferenceError: Parameter/s are not type of number.
Inside the finally block to execute the code before program termination.

我们在本教程中学习了如何处理错误。我们使用 try、catch 和 finally 块来处理错误。但是,在 TypeScript 中处理错误与在 JavaScript 中处理错误类似,但我们还必须关注 TypeScript 中的错误类型。


相关文章