LibJF/libjf-base/src/main/java/io/gitlab/jfronny/libjf/generic/Try.java
2022-04-22 19:29:59 +02:00

59 lines
2.3 KiB
Java

package io.gitlab.jfronny.libjf.generic;
import java.util.Objects;
import java.util.function.*;
public class Try {
public static void orElse(ThrowingRunnable<?> tr, Consumer<Throwable> alternative) {
Objects.requireNonNull(tr).addHandler(alternative).run();
}
public static <T> T orElse(ThrowingSupplier<T, ?> tr, Function<Throwable, ? extends T> alternative) {
return Objects.requireNonNull(tr).addHandler(alternative).get();
}
public static void orThrow(ThrowingRunnable<?> tr) {
Objects.requireNonNull(tr).orThrow().run();
}
public static <T> T orThrow(ThrowingSupplier<T, ?> tr) {
return Objects.requireNonNull(tr).orThrow().get();
}
public static <T, U> BiConsumer<T, U> handle(ThrowingBiConsumer<T, U, ?> tr, Consumer<Throwable> handler) {
return Objects.requireNonNull(tr).addHandler(handler);
}
public static <T, U, R> BiFunction<T, U, R> handle(ThrowingBiFunction<T, U, R, ?> tr, Function<Throwable, ? extends R> handler) {
return Objects.requireNonNull(tr).addHandler(handler);
}
public static BooleanSupplier handle(ThrowingBooleanSupplier<?> tr, Predicate<Throwable> handler) {
return Objects.requireNonNull(tr).addHandler(handler);
}
public static <T> Consumer<T> handle(ThrowingConsumer<T, ?> tr, Consumer<Throwable> handler) {
return Objects.requireNonNull(tr).addHandler(handler);
}
public static <T, R> Function<T, R> handle(ThrowingFunction<T, R, ?> tr, Function<Throwable, ? extends R> handler) {
return Objects.requireNonNull(tr).addHandler(handler);
}
public static <T> Predicate<T> handle(ThrowingPredicate<T, ?> tr, Predicate<Throwable> handler) {
return Objects.requireNonNull(tr).addHandler(handler);
}
public static Runnable handle(ThrowingRunnable<?> tr, Consumer<Throwable> handler) {
return Objects.requireNonNull(tr).addHandler(handler);
}
public static <T> Supplier<T> handle(ThrowingSupplier<T, ?> tr, Function<Throwable, ? extends T> handler) {
return Objects.requireNonNull(tr).addHandler(handler);
}
protected static RuntimeException runtimeException(Throwable t) {
return t == null ? null : t instanceof RuntimeException e ? e : new RuntimeException(t);
}
}