on
it
road
.com
抑制异常示例
例如,在写入输出流时,可以从 try
块中抛出异常,并且当尝试关闭流时,try-with-resources 语句最多可以抛出两个异常。
如果从 try 块中抛出异常并且从 try-with-resources 语句中抛出一个或者多个异常,那么从 try-with-resources 语句中抛出的那些异常将被抑制,并且块抛出的异常是由 closeStream()
方法抛出。
我们可以通过从 try 块抛出的异常中调用 Throwable.getSuppressed() 方法来检索这些被抑制的异常。
抑制异常,顾名思义,是在代码中抛出但以某种方式被忽略的异常。
如果你记得 try-catch-finally 块的执行顺序以及它们如何返回任何值或者异常,你会记得如果在 try
块中抛出异常,则在 finally
块中抛出的异常也会被抑制。
什么是抑制异常?
在 Java 7 中,遇到抑制异常的最常见用例可能是 try-with-resources 语句。
当我们在 try 块中遇到异常时,应用程序会尝试关闭资源。
如果它遇到在关闭“AutoCloseable”资源时可能发生的多个异常,则添加异常作为抑制异常添加到主要异常。
为了支持抑制异常,JDK 7 中的 Throwable 类(Exception
和 Error
类的父类)添加了一个新的构造函数和两个新方法。
Throwable.getSupressed(); // Returns Throwable[] Throwable.addSupressed(aThrowable);
日期:2020-09-17 00:09:38 来源:oir作者:oir