Modifier and Type | Method and Description |
---|---|
static void |
close(Closeable closeable,
boolean swallowIOException)
Closes a
Closeable , with control over whether an IOException may be thrown. |
static void |
closeQuietly(InputStream inputStream)
Closes the given
InputStream , logging any IOException that’s thrown rather than propagating it. |
static void |
closeQuietly(Reader reader)
Closes the given
Reader , logging any IOException that’s thrown rather than propagating it. |
public static void close(@Nullable Closeable closeable, boolean swallowIOException) throws IOException
Closes a Closeable
, with control over whether an IOException
may be thrown. This is primarily useful in a finally block, where a thrown exception needs to be logged but not propagated (otherwise the original exception will be lost).
If swallowIOException
is true then we never throw IOException
but merely log it.
Example:
public void useStreamNicely() throws IOException {
SomeStream stream = new SomeStream("foo");
boolean threw = true;
try {
// ... code which does something with the stream ...
threw = false;
} finally { // If an exception occurs, rethrow it only if threw==false: Closeables.close(stream, threw); } }
closeable
- the Closeable
object to be closed, or null, in which case this method does nothingswallowIOException
- if true, don’t propagate IO exceptions thrown by the close
methodsIOException
- if swallowIOException
is false and close
throws an IOException
.public static void closeQuietly(@Nullable InputStream inputStream)
Closes the given InputStream
, logging any IOException
that’s thrown rather than propagating it.
While it’s not safe in the general case to ignore exceptions that are thrown when closing an I/O resource, it should generally be safe in the case of a resource that’s being used only for reading, such as an InputStream
. Unlike with writable resources, there’s no chance that a failure that occurs when closing the stream indicates a meaningful problem such as a failure to flush all bytes to the underlying resource.
inputStream
- the input stream to be closed, or null
in which case this method does nothingpublic static void closeQuietly(@Nullable Reader reader)
Closes the given Reader
, logging any IOException
that’s thrown rather than propagating it.
While it’s not safe in the general case to ignore exceptions that are thrown when closing an I/O resource, it should generally be safe in the case of a resource that’s being used only for reading, such as a Reader
. Unlike with writable resources, there’s no chance that a failure that occurs when closing the reader indicates a meaningful problem such as a failure to flush all bytes to the underlying resource.
reader
- the reader to be closed, or null
in which case this method does nothing