"throw(e)" 和 "throw e" 的区别?

Difference between "throw(e)" and "throw e"?

我遇到了这个重新抛出的异常,我很惊讶它甚至可以编译。

} catch(SomeException e) {
    ...
    throw(e);
}

这个throw()和平时用的有什么区别吗?...

} catch(SomeException e) {
    ...
    throw e;
}

是否有指向记录此内容的位置的任何链接或关于选择一个而不是另一个的指导?

有相当多的语言允许在表达式周围添加任意数量的括号。 Java 就是其中之一。以下是完全有效的代码。

public class HelloWorld {
  public static void main(String[] args) {
    throw ((((new RuntimeException()))));
  }
}

所以除了你的源文件大两个字节外,绝对没有区别。

它们在功能上是等价的。

但是,不要选择throw(e);,因为有人可能会把它误认为是方法调用,至少会让别人不必要地想知道你在做什么。为了清晰起见,更喜欢正常的 throw e; 语法。

throw 是抛出一个"throwable"(通常是异常)的指令

想想它是否像一个 return 语句

Public int get value() {
    return 3;
}

等于

Public int get value() {
    return (3);
}

throwable也是一样

在表面上他们会遵守完全相同的事情。