处理 TypeScript 中的错误
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 中的错误类型。