59 lines
2.3 KiB
Java
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);
|
|
}
|
|
}
|