package org.springblade.core.tool.support; import org.springblade.core.tool.utils.Exceptions; import org.springframework.lang.Nullable; import java.util.Objects; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Supplier; /** * Lambda 受检异常处理 * https://segmentfault.com/a/1190000007832130 * * @author Chill */ public class Try { public static Function of(UncheckedFunction mapper) { Objects.requireNonNull(mapper); return t -> { try { return mapper.apply(t); } catch (Exception e) { throw Exceptions.unchecked(e); } }; } public static Consumer of(UncheckedConsumer mapper) { Objects.requireNonNull(mapper); return t -> { try { mapper.accept(t); } catch (Exception e) { throw Exceptions.unchecked(e); } }; } public static Supplier of(UncheckedSupplier mapper) { Objects.requireNonNull(mapper); return () -> { try { return mapper.get(); } catch (Exception e) { throw Exceptions.unchecked(e); } }; } @FunctionalInterface public interface UncheckedFunction { /** * apply * * @param t * @return * @throws Exception */ @Nullable R apply(@Nullable T t) throws Exception; } @FunctionalInterface public interface UncheckedConsumer { /** * accept * * @param t * @throws Exception */ @Nullable void accept(@Nullable T t) throws Exception; } @FunctionalInterface public interface UncheckedSupplier { /** * get * * @return * @throws Exception */ @Nullable T get() throws Exception; } }