Cof*_*fee 6 java exception throwable
所以Java在Throwable中有一个方法
public final void addSuppressed(Throwable exception)
Run Code Online (Sandbox Code Playgroud)
这就是它的作用:
将指定的异常附加到为了传递此异常而被抑制的异常.此方法是线程安全的,通常由try-with-resources语句调用(自动和隐式).
..我对此感到困惑,什么是"为了传递此异常而被抑制的异常的指定异常".?
文档中有一个很好的解释:Throwable
除非通过构造函数禁用,否则抑制行为将被启用。当抑制被禁用时,此方法除了验证其参数之外什么也不做。
请注意,当一个异常导致另一个异常时,通常会捕获第一个异常,然后抛出第二个异常作为响应。换句话说,这两个异常之间存在因果关系。相反,在某些情况下,可以在同级代码块中引发两个独立的异常,特别是在 try-with-resources 语句的 try 块和编译器生成的关闭资源的 finally 块中。在这些情况下,只能传播抛出的异常之一。在 try-with-resources 语句中,当存在两个此类异常时,来自 try 块的异常将被传播,并且来自 finally 块的异常将被添加到由来自 try 块的异常抑制的异常列表中。当异常展开堆栈时,它可以累积多个受抑制的异常。
一个异常可能会抑制异常,同时也可能是由另一个异常引起的。异常是否有原因在其创建时在语义上是已知的,这与异常是否会抑制其他异常不同,后者通常仅在抛出异常后确定。
请注意,在存在多个同级异常且只能传播一个异常的情况下,程序员编写的代码也可以利用调用此方法。
| 归档时间: |
|
| 查看次数: |
1048 次 |
| 最近记录: |