@Nullable
    protected Object handleThrownException(final Throwable exception) throws Throwable {
        log.debug("Exception caught during gRPC execution: ", exception);

        final Class<? extends Throwable> exceptionClass = exception.getClass();
        final boolean exceptionIsMapped =
                this.grpcExceptionHandlerMethodResolver.isMethodMappedForException(exceptionClass);
        if (!exceptionIsMapped) {
            throw exception;
        }

        final Entry<Object, Method> methodWithInstance =
                this.grpcExceptionHandlerMethodResolver.resolveMethodWithInstance(exceptionClass);
        final Method mappedMethod = methodWithInstance.getValue();
        final Object instanceOfMappedMethod = methodWithInstance.getKey();
        final Object[] instancedParams = determineInstancedParameters(mappedMethod, exception);

        return invokeMappedMethodSafely(mappedMethod, instanceOfMappedMethod, instancedParams);
    }
Given an exception, a lookup is performed to retrieve mapped method. <br>
In case of successful returned method, and matching exception parameter type for given exception, the exception
is handed over to retrieved method. Retrieved method is then being invoked.

@param exception exception to search for
@return result of invoked mapped method to given exception
@throws Throwable rethrows exception if no mapping existent or exceptions raised by implementation
grpc-server-spring-boot-starter/src/main/java/net/devh/boot/grpc/server/advice/GrpcAdviceExceptionHandler.java