javascript传递

Int*_*tra 32 javascript python exception-handling exception

在javascript中有没有像python'pass'那样的东西?

我想做javascript相当于:

try:
  # Something that throws exception
catch:
  pass
Run Code Online (Sandbox Code Playgroud)

Mat*_*all 43

pass是Python中的无操作.你需要它用于空块,因为

try:
    # Something that throws exception
catch:

# continue other stuff
Run Code Online (Sandbox Code Playgroud)

是语法错误.在JavaScript中,您可以使用空catch块.

try {
    // Something that throws exception
}
catch (e) {}
Run Code Online (Sandbox Code Playgroud)

  • `eslint` 对此有所抱怨。 (4认同)

dus*_*uff 31

有,这里是:


没错,什么都没有:

try {
    somethingThatThrowsAnException();
} catch (e) {
}
Run Code Online (Sandbox Code Playgroud)


Aar*_*all 6

我想做的 javascript 相当于:

try:
  # Something that throws exception
catch:
  pass
Run Code Online (Sandbox Code Playgroud)

Python 没有 try/catch。它有尝试/例外。因此,替换catchexcept,我们将得到:

try {
  //     throw any exception
} catch(err) {}  
Run Code Online (Sandbox Code Playgroud)

catch 后面的空代码块相当于 Python 的pass.

最佳实践

然而,人们对这个问题的解释可能会略有不同。假设您想要采用与 Python try/ except 块相同的语义。Python 的异常处理更加细致,可让您指定要捕获的错误。

事实上,仅捕获特定错误类型被认为是最佳实践。

因此,Python 的最佳实践版本是,因为您只想捕获准备处理的异常,并避免隐藏错误:

try:
    raise TypeError
except TypeError as err:
    pass
Run Code Online (Sandbox Code Playgroud)

您可能应该子类化适当的错误类型,标准 Javascript 没有非常丰富的异常层次结构。我选择TypeError它是因为它与 Python 的TypeError.

为了在 Javascript 中遵循相同的语义,我们首先必须捕获所有错误,因此我们需要对此进行调整的控制流。pass所以我们需要用if 条件来确定错误是否不是我们想要的错误类型。缺乏 else 控制流是导致TypeError. 理论上,使用此代码,所有其他类型的错误都应该浮出水面并得到修复,或者至少被识别以进行额外的错误处理:

try {                                 // try:
  throw TypeError()                   //     raise ValueError
} catch(err) {                        // # this code block same behavior as
  if (!(err instanceof TypeError)) {  // except ValueError as err:
    throw err                         //     pass
  } 
}                       
Run Code Online (Sandbox Code Playgroud)

欢迎评论!