Package org.apache.sis.util.collection
Class BackingStoreException
- Object
-
- Throwable
-
- Exception
-
- RuntimeException
-
- BackingStoreException
-
- All Implemented Interfaces:
Serializable
public class BackingStoreException extends RuntimeException
Thrown to indicate that an operation could not complete because of a failure in the backing store (a file or a database). This exception is thrown by implementations of API (collection, streams, etc. that are not allowed to throw checked exceptions. This exception usually has anIOExceptionor aSQLExceptionas its cause.This method provides a
unwrapOrRethrow(Class)convenience method which can be used for re-throwing the cause as in the example below. This allows client code to behave as if aCollectioninterface was allowed to declare checked exceptions.void myMethod() throws IOException { Collection c = ...; try { c.doSomeStuff(); } catch (BackingStoreException e) { throw e.unwrapOrRethrow(IOException.class); } }Relationship withJDK8 provides ajava.io.UncheckedIOExceptionUncheckedIOExceptionwhich partially overlaps the purpose of thisBackingStoreException. While Apache SIS still usesBackingStoreExceptionas a general mechanism for any kind of checked exceptions, client code would be well advised to catch both kind of exceptions for robustness.- Since:
- 0.3
- See Also:
- Serialized Form
Defined in the
sis-utilitymodule
-
-
Constructor Summary
Constructors Constructor Description BackingStoreException()Constructs a new exception with no detail message.BackingStoreException(String message)Constructs a new exception with the specified detail message.BackingStoreException(String message, Throwable cause)Constructs a new exception with the specified detail message and cause.BackingStoreException(Throwable cause)Constructs a new exception with the specified cause.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <E extends Exception>
EunwrapOrRethrow(Class<E> type)Returns the underlying cause as an exception of the given type, or re-throw the exception.-
Methods inherited from class Throwable
addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
-
-
-
-
Constructor Detail
-
BackingStoreException
public BackingStoreException()
Constructs a new exception with no detail message.
-
BackingStoreException
public BackingStoreException(String message)
Constructs a new exception with the specified detail message.- Parameters:
message- the detail message, saved for later retrieval by theThrowable.getMessage()method.
-
BackingStoreException
public BackingStoreException(Throwable cause)
Constructs a new exception with the specified cause.- Parameters:
cause- the cause, saved for later retrieval by theThrowable.getCause()method.
-
BackingStoreException
public BackingStoreException(String message, Throwable cause)
Constructs a new exception with the specified detail message and cause.- Parameters:
message- the detail message, saved for later retrieval by theThrowable.getMessage()method.cause- the cause, saved for later retrieval by theThrowable.getCause()method.
-
-
Method Detail
-
unwrapOrRethrow
public <E extends Exception> E unwrapOrRethrow(Class<E> type) throws RuntimeException, BackingStoreException
Returns the underlying cause as an exception of the given type, or re-throw the exception. More specifically, this method makes the following choices:- If the cause is an instance of the given type, returns the cause.
- Otherwise if the cause is an instance of
RuntimeException, throws that exception. - Otherwise re-throws
this.
void myMethod() throws IOException { Collection c = ...; try { c.doSomeStuff(); } catch (BackingStoreException e) { throw e.unwrapOrRethrow(IOException.class); } }- Type Parameters:
E- the type of the exception to unwrap.- Parameters:
type- the type of the exception to unwrap.- Returns:
- the cause as an exception of the given type (never
null). - Throws:
RuntimeException- if the cause is an instance ofRuntimeException, in which case that instance is re-thrown.BackingStoreException- if the cause is neither the given type or an instance ofRuntimeException, in which casethisexception is re-thrown.
-
-