Class ExceptionPassthroughInputStream

java.lang.Object
java.io.InputStream
com.bumptech.glide.util.ExceptionPassthroughInputStream
All Implemented Interfaces:
Closeable, AutoCloseable

public final class ExceptionPassthroughInputStream extends InputStream
An InputStream that catches, stores and rethrows IOExceptions during read and skip calls. This allows users of this API to handle the exception at a higher level if the exception is swallowed by some intermediate library. This class is a workaround for a framework issue where exceptions during reads while decoding bitmaps in BitmapFactory can return partially decoded bitmaps.

Unlike the deprecated ExceptionCatchingInputStream, this class will both store and re-throw any IOExceptions. Rethrowing works around bugs in wrapping streams that may not fully obey the stream contract. This is really only useful if some middle layer is going to catch the exception (like BitmapFactory) but we want to propagate the exception instead.

See https://github.com/bumptech/glide/issues/126 and #4438.