Class FunctionalCheckedExceptionWrappers


  • public final class FunctionalCheckedExceptionWrappers
    extends Object
    A collections of utility methods for simplifying the syntax of lambda expressions with APIs that don't accept checked exceptions (such as Stream): they provide wrapped functions that have no checked exception in the signature and whose implementation delegates to the original function wrapping an eventual checked exception into a RuntimeException. For instance, given the following method that could not be used as a Stream.filter(Predicate) argument:
       private boolean matchEven (final int number)
               throws Exception
         {
           if (number == 13)
             {
               throw new Exception("13!");
             }
    
           return number % 2 == 0;
         }
     
    working code can be written as:
       try
         {
           List numbers = IntStream.rangeClosed(1, 20)
                                            .mapToObj(Integer::valueOf)
                                            .filter(_p(this::matchEven)) // note the wrapper here
                                            .collect(Collectors.toList());
           ...
         }
       catch (RuntimeException e)
         {
           ...
         }
     
    Any checked exception is wrapped by a RuntimeException, but IOException is wrapped by a UncheckedIOException.
    Since:
    3.2-ALPHA-1
    Author:
    Fabrizio Giudici
    Status: draft API