37

javascript中是否有类似于python'pass'的东西?

我想做的javascript相当于:

try:
  # Something that throws exception
catch:
  pass
4

3 回答 3

49

pass是 Python 中的空操作。你需要它来处理空块,因为

try:
    # Something that throws exception
catch:

# continue other stuff

是语法错误。在 JavaScript 中,您可以只使用一个空catch块。

try {
    // Something that throws exception
}
catch (e) {}
于 2012-05-23T20:06:28.347 回答
36

有,这里是:



没错,什么都没有:

try {
    somethingThatThrowsAnException();
} catch (e) {
}
于 2012-05-23T20:06:35.090 回答
4

我想做的javascript相当于:

try:
  # Something that throws exception
catch:
  pass

Python 没有 try/catch。它有尝试/除外。所以用 替换catchexcept我们会有这个:

try {
  //     throw any exception
} catch(err) {}  

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

最佳实践

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

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

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

try:
    raise TypeError
except TypeError as err:
    pass

您可能应该对适当的错误类型进行子类化,标准 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
  } 
}                       

欢迎评论!

于 2015-02-02T22:28:42.827 回答