protected Future onException()

in safeguard-impl/src/main/java/org/apache/safeguard/impl/asynchronous/BaseAsynchronousInterceptor.java [206:238]


        protected Future<T> onException(final Throwable cause) throws ExecutionException {
            if (!Exception.class.isInstance(cause)) {
                if (Error.class.isInstance(cause)) {
                    throw Error.class.cast(cause);
                }
                throw new IllegalStateException(cause);
            }
            final Exception ex = Exception.class.cast(cause);
            final ErrorHandler<Exception, Future<?>> handler = getErrorHandler(data);
            if (handler != null) {
                try {
                    return (Future<T>) handler.apply(ex);
                } catch (final Exception e) {
                    if (ExecutionException.class.isInstance(e)) {
                        throw ExecutionException.class.cast(e);
                    }
                    if (RuntimeException.class.isInstance(e)) {
                        throw RuntimeException.class.cast(e);
                    }
                    if (Error.class.isInstance(e)) {
                        throw Error.class.cast(e);
                    }
                    throw new IllegalStateException(e);
                }
            }
            if (ExecutionException.class.isInstance(cause)) {
                throw ExecutionException.class.cast(cause);
            }
            if (RuntimeException.class.isInstance(cause)) {
                throw RuntimeException.class.cast(cause);
            }
            throw new IllegalStateException(cause); // unreachable - just for compiler
        }