ES12 中 try {…} catch(e){} 的新姿势,你还不知道吧!

JavaScript 是一种动态语言,这意味着代码中可能存在一些错误,因为它无法在编译时发现它们。然而,使用 try{} catch{} 块可以帮助我们在代码中处理异常。新的 ES12 标准引入了一些新的功能来增强 try {…} catch(e){} 块的功能,帮助您更好地处理错误。

try {…} catch(e){} 的标准用法

首先,让我们回顾一下 try {…} catch(e){} 块的常规用法。这个结构包含了两个部分:

  • try 代码块是您需要包含代码的地方,可能会导致异常情况。
  • catch 代码块是您可以在其中处理异常的地方。

语法如下:

catch 块可以省略,但 try 块始终需要。如果您只需要在 try 块中执行代码,并不需要处理任何异常情况,那么您可以省略 catch 块。

“finally” 代码块是可选的。如果指定,则在 try 或 catch 中发生异常引发的异常对象被处理后该代码块始终会执行。这是一个很好的地方,您可以在其中释放资源或完成其他清理任务。

新的 try {…} catch(e){} 功能

ES12 引入了一些新的 try {…} catch(e){} 功能来增强其功能。现在,我们可以一起探讨这些新的功能。

1. “try .. catch”支持执行块

ES12 标准提供了 try-catch 语法的一个新特性,即 catch 子句可用于执行代码块。它可以用作一个更具可读性的语法结构,而不需要创建临时变量来引用错误。

语法如下:

更好的例子:

通过这种方式,您可以使代码更加可读和易于维护,因为错误处理逻辑直接嵌入到 try-catch 结构中。

2. Error 对象支持堆栈追踪增强

ES12 提供了改进的堆栈跟踪,这样您就可以更容易地找到 causingException 。causingException 会告诉您繁忙的堆栈中最初发生错误的地方。

语法如下:

在这种情况下,当异常进入 catch 块时,error 包含 Exception,CausingException 和 stackTrace 属性。

3. try {…} catch(e){} 现在支持列表推导式

ES12 中的 try-catch 语法现在支持列表推导式,这意味着错误处理代码块现在可以处理一个列表中的值,而不仅仅是单个值。

语法如下:

在这样的情况下,catch 子句还包括一个 if 子句,以对错误进行判断,以便选择正确的异常处理块。

组合使用

您还可以将之前列出的这些特性合并在一起。例如:

在这个示例中,我们首先抛出一个类型错误。我们捕获它,如果是一个类型错误,则打印 causingException(堆栈跟踪),否则打印错误本身。最后,不管发生了什么,finally 块总是执行。

总结:

ES12 对 try {…} catch(e){} 添加了一些新的功能和语法,这可以使您的代码更加易于阅读、便于维护并更加强大。堆栈跟踪的修正让错误处理变得更加容易。支持执行块和列表推导式让代码更易懂和可读。因此,使用这些新的特性能帮助您更好地处理异常,并改进您的代码的质量。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652f4c307d4982a6eb064538


纠错
反馈