code: public static <X extends Throwable> void throwOrHandle(final X e, final Predicate<X> p, final Consumer<X> handler) {
          if (p.test(e))
              throw ExceptionSoftener.<RuntimeException> uncheck(e);
          else
              handler.accept(e);
      }
docs: Throw the exception as upwards if the predicate holds, otherwise pass to the handler
  
  @param e  Exception
  @param p Predicate to check exception should be thrown or not
  @param handler Handles exceptions that should not be thrown