All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.blade.kit.ExceptionKit Maven / Gradle / Ivy

There is a newer version: 2.0.15.RELEASE
Show newest version
/**
 * Copyright (c) 2017, biezhi 王爵 ([email protected])
 * 

* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *

* http://www.apache.org/licenses/LICENSE-2.0 *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.blade.kit; import lombok.experimental.UtilityClass; import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Supplier; @UtilityClass public class ExceptionKit { @FunctionalInterface public interface ConsumerWithExceptions { void accept(T t) throws E; } @FunctionalInterface public interface BiConsumerWithExceptions { void accept(T t, U u) throws E; } @FunctionalInterface public interface FunctionWithExceptions { R apply(T t) throws E; } @FunctionalInterface public interface SupplierWithExceptions { T get() throws E; } @FunctionalInterface public interface RunnableWithExceptions { void run() throws E; } /** * .forEach(rethrowConsumer(name -> System.out.println(Class.forName(name)))); or .forEach(rethrowConsumer(ClassNameUtil::println)); */ public static Consumer rethrowConsumer(ConsumerWithExceptions consumer) throws E { return t -> { try { consumer.accept(t); } catch (Exception exception) { throwAsUnchecked(exception); } }; } public static BiConsumer rethrowBiConsumer(BiConsumerWithExceptions biConsumer) throws E { return (t, u) -> { try { biConsumer.accept(t, u); } catch (Exception exception) { throwAsUnchecked(exception); } }; } /** * .map(rethrowFunction(name -> Class.forName(name))) or .map(rethrowFunction(Class::forName)) */ public static Function rethrowFunction(FunctionWithExceptions function) throws E { return t -> { try { return function.apply(t); } catch (Exception exception) { throwAsUnchecked(exception); return null; } }; } /** * rethrowSupplier(() -> new StringJoiner(new String(new byte[]{77, 97, 114, 107}, "UTF-8"))), */ public static Supplier rethrowSupplier(SupplierWithExceptions function) throws E { return () -> { try { return function.get(); } catch (Exception exception) { throwAsUnchecked(exception); return null; } }; } /** * uncheck(() -> Class.forName("xxx")); */ public static void uncheck(RunnableWithExceptions t) { try { t.run(); } catch (Exception exception) { throwAsUnchecked(exception); } } /** * uncheck(() -> Class.forName("xxx")); */ public static R uncheck(SupplierWithExceptions supplier) { try { return supplier.get(); } catch (Exception exception) { throwAsUnchecked(exception); return null; } } /** * uncheck(Class::forName, "xxx"); */ public static R uncheck(FunctionWithExceptions function, T t) { try { return function.apply(t); } catch (Exception exception) { throwAsUnchecked(exception); return null; } } @SuppressWarnings("unchecked") private static void throwAsUnchecked(Exception exception) throws E { throw (E) exception; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy