Ade*_*lin 6 java exception-handling exception
我不知道怎么说我已经使用Java已有4年了,而我第一次遇到这个参数enableSuppression时,有人可以解释它的作用以及何时启用/禁用它吗?
enableSuppression是Throwables的构造函数中的参数(包括Exception)
它决定是否启用抑制。
从Javadocs:
除非通过构造函数禁用,否则会启用抑制行为。
请注意,当一个异常导致另一个异常时,通常会捕获第一个异常,然后抛出第二个异常作为响应。换句话说,这两个例外之间存在因果关系。相反,在某些情况下,兄弟代码块中可能会抛出两个独立的异常,特别是在 try-with-resources 语句的 try 块和编译器生成的关闭资源的 finally 块中。在这些情况下,只能传播抛出的异常之一。在 try-with-resources 语句中,当有两个这样的异常时,来自 try 块的异常被传播,并且来自 finally 块的异常被添加到被来自 try 块的异常抑制的异常列表中。作为一个异常展开堆栈,
一个异常可能抑制了异常,同时也由另一个异常引起。异常是否有原因在其创建时在语义上是已知的,这与异常是否会抑制其他异常不同,后者通常仅在抛出异常后确定。
请注意,在存在多个同级异常且只能传播一个异常的情况下,程序员编写的代码也能够利用调用此方法的优势。