Java RuntimeException enableSuppression参数有什么作用?

时间:2015-09-07 12:04:28

标签: java exception exception-handling

我不知道如何说我已经使用Java 4年了,而且我第一次遇到这个参数enableSuppression有人可以解释它做什么以及何时启用/禁用它?

1 个答案:

答案 0 :(得分:4)

enableSuppressionThrowable的构造函数中的参数(包括Exception

确定是否启用抑制。

来自Javadocs

  

除非通过构造函数禁用,否则启用抑制行为。

     

请注意,当一个异常导致另一个异常时,第一个异常   通常会捕获异常,然后抛出第二个异常   响应。换句话说,两者之间存在因果关系   例外。相比之下,有两个独立的情况   异常可以在兄弟代码块中抛出,特别是在   尝试使用try-with-resources语句和编译器生成的块   finally块关闭资源。在这些情况下,只有一个   抛出的异常可以传播。在try-with-resources中   声明,当有两个这样的例外时,例外   源自try块的传播和异常来自   finally块被添加到由...抑制的异常列表中   try块的异常。作为一个例外展开堆栈,它   可以累积多个被抑制的异常。

     

异常可能会抑制异常,同时也是由异常引起的   另一个例外。异常是否有原因是   在创建时在语义上已知,不管是否   异常将抑制通常只有的其他异常   在抛出异常后确定。

     

请注意,程序员编写的代码也能够利用   在有多个兄弟的情况下调用此方法   例外,只有一个可以传播。