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

noc*_*ura 4 java exception throw

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

} catch(SomeException e) {
    ...
    throw(e);
}
Run Code Online (Sandbox Code Playgroud)

这个throw()和通常使用的是什么区别?...

} catch(SomeException e) {
    ...
    throw e;
}
Run Code Online (Sandbox Code Playgroud)

是否记录了这些内容的任何链接或选择其中一个的指导?

kel*_*nik 9

相当多的语言可以根据需要在表达式周围添加多个括号.Java就是其中之一.以下是完全有效的代码.

public class HelloWorld {
  public static void main(String[] args) {
    throw ((((new RuntimeException()))));
  }
}
Run Code Online (Sandbox Code Playgroud)

所以除了你的源文件大两个字节外,没有什么区别.

  • "所以除了你的源文件大两个字节之外,没有什么区别." 而且可读性要低得多. (2认同)

eis*_*eis 6

在功能上它们是等价的.

但是,不要选择throw(e);,因为有人可能会误认为是方法调用,至少会让某人不必要地想知道你正在做什么.throw e;为清晰起见,请优先使用正常语法.

  • 对.既不是功能要求也不是可读性改进的不必要的括号是容易出错和死代码的. (2认同)