diff --git a/hutool-core/src/main/java/cn/hutool/core/exceptions/CheckedUtil.java b/hutool-core/src/main/java/cn/hutool/core/exceptions/CheckedUtil.java
index f1380a2d0..3b76d8a78 100644
--- a/hutool-core/src/main/java/cn/hutool/core/exceptions/CheckedUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/exceptions/CheckedUtil.java
@@ -145,6 +145,31 @@ public class CheckedUtil {
};
}
+ /**
+ * 接收一个可以转化成 cn.hutool.core.lang.func.Func的Lambda表达式,和一个可以把Exception转化成RuntimeExceptionde的表达式,当执行表达式抛出任何异常的时候,都会转化成运行时异常
+ * 如此一来,代码中就不用显示的try-catch转化成运行时异常
+ *
+ * @param expression Lambda表达式
+ * @param rteSupplier 转化运行时异常的表达式
+ * @param
运行时传入的参数类型
+ * @param 最终返回的数据类型
+ * @return {@link FuncRt}
+ */
+ public static FuncRt
uncheck(Func
expression, Supplier1 rteSupplier) {
+ Objects.requireNonNull(expression, "expression can not be null");
+ return t -> {
+ try {
+ return expression.call(t);
+ } catch (Exception e) {
+ if (rteSupplier == null) {
+ throw new RuntimeException(e);
+ } else {
+ throw rteSupplier.get(e);
+ }
+ }
+ };
+ }
+
/**
* 接收一个可以转化成 cn.hutool.core.lang.func.Func0的Lambda表达式,和一个RuntimeException,当执行表达式抛出任何异常的时候,都会转化成运行时异常
* 如此一来,代码中就不用显示的try-catch转化成运行时异常
@@ -170,6 +195,30 @@ public class CheckedUtil {
};
}
+ /**
+ * 接收一个可以转化成 cn.hutool.core.lang.func.Func0的Lambda表达式,和一个可以把Exception转化成RuntimeExceptionde的表达式,当执行表达式抛出任何异常的时候,都会转化成运行时异常
+ * 如此一来,代码中就不用显示的try-catch转化成运行时异常
+ *
+ * @param expression Lambda表达式
+ * @param rteSupplier 转化运行时异常的表达式
+ * @param 最终返回的数据类型
+ * @return {@link Func0Rt}
+ */
+ public static Func0Rt uncheck(Func0 expression, Supplier1 rteSupplier) {
+ Objects.requireNonNull(expression, "expression can not be null");
+ return () -> {
+ try {
+ return expression.call();
+ } catch (Exception e) {
+ if (rteSupplier == null) {
+ throw new RuntimeException(e);
+ } else {
+ throw rteSupplier.get(e);
+ }
+ }
+ };
+ }
+
/**
* 接收一个可以转化成 cn.hutool.core.lang.func.Func1的Lambda表达式,和一个RuntimeException,当执行表达式抛出任何异常的时候,都会转化成运行时异常
* 如此一来,代码中就不用显示的try-catch转化成运行时异常
@@ -197,7 +246,32 @@ public class CheckedUtil {
}
/**
- * 接收一个可以转化成 cn.hutool.core.lang.func.VoidFunc的Lambda表达式,和一个RuntimeException,当执行表达式抛出任何异常的时候,都会转化成运行时异常
+ * 接收一个可以转化成 cn.hutool.core.lang.func.Func1的Lambda表达式,和一个可以把Exception转化成RuntimeExceptionde的表达式,当执行表达式抛出任何异常的时候,都会转化成运行时异常
+ * 如此一来,代码中就不用显示的try-catch转化成运行时异常
+ *
+ * @param expression Lambda表达式
+ * @param rteSupplier 转化运行时异常的表达式
+ * @param 运行时传入的参数类型
+ * @param 最终返回的数据类型
+ * @return {@link Func1Rt}
+ */
+ public static Func1Rt
uncheck(Func1
expression, Supplier1 rteSupplier) {
+ Objects.requireNonNull(expression, "expression can not be null");
+ return t -> {
+ try {
+ return expression.call(t);
+ } catch (Exception e) {
+ if (rteSupplier == null) {
+ throw new RuntimeException(e);
+ } else {
+ throw rteSupplier.get(e);
+ }
+ }
+ };
+ }
+
+ /**
+ * 接收一个可以转化成 cn.hutool.core.lang.func.VoidFunc的Lambda表达式,和一个可以把Exception转化成RuntimeExceptionde的表达式,当执行表达式抛出任何异常的时候,都会转化成运行时异常
* 如此一来,代码中就不用显示的try-catch转化成运行时异常
*
* @param expression Lambda表达式
@@ -221,6 +295,30 @@ public class CheckedUtil {
};
}
+ /**
+ * 接收一个可以转化成 cn.hutool.core.lang.func.VoidFunc的Lambda表达式,和一个可以把Exception转化成RuntimeExceptionde的表达式,当执行表达式抛出任何异常的时候,都会转化成运行时异常
+ * 如此一来,代码中就不用显示的try-catch转化成运行时异常
+ *
+ * @param expression Lambda表达式
+ * @param rteSupplier 转化运行时异常的表达式
+ * @param 运行时传入的参数类型
+ * @return {@link VoidFuncRt}
+ */
+ public static
VoidFuncRt
uncheck(VoidFunc
expression, Supplier1 rteSupplier) {
+ Objects.requireNonNull(expression, "expression can not be null");
+ return t -> {
+ try {
+ expression.call(t);
+ } catch (Exception e) {
+ if (rteSupplier == null) {
+ throw new RuntimeException(e);
+ } else {
+ throw rteSupplier.get(e);
+ }
+ }
+ };
+ }
+
/**
* 接收一个可以转化成 cn.hutool.core.lang.func.VoidFunc0的Lambda表达式,和一个RuntimeException,当执行表达式抛出任何异常的时候,都会转化成运行时异常
@@ -246,6 +344,29 @@ public class CheckedUtil {
};
}
+ /**
+ * 接收一个可以转化成 cn.hutool.core.lang.func.VoidFunc0的Lambda表达式,和一个可以把Exception转化成RuntimeExceptionde的表达式,当执行表达式抛出任何异常的时候,都会转化成运行时异常
+ * 如此一来,代码中就不用显示的try-catch转化成运行时异常
+ *
+ * @param expression Lambda表达式
+ * @param rteSupplier 转化运行时异常的表达式
+ * @return {@link VoidFunc0Rt}
+ */
+ public static VoidFunc0Rt uncheck(VoidFunc0 expression, Supplier1 rteSupplier) {
+ Objects.requireNonNull(expression, "expression can not be null");
+ return () -> {
+ try {
+ expression.call();
+ } catch (Exception e) {
+ if (rteSupplier == null) {
+ throw new RuntimeException(e);
+ } else {
+ throw rteSupplier.get(e);
+ }
+ }
+ };
+ }
+
/**
* 接收一个可以转化成 cn.hutool.core.lang.func.VoidFunc1的Lambda表达式,和一个RuntimeException,当执行表达式抛出任何异常的时候,都会转化成运行时异常
@@ -272,29 +393,57 @@ public class CheckedUtil {
};
}
+ /**
+ * 接收一个可以转化成 cn.hutool.core.lang.func.VoidFunc1的Lambda表达式,和一个RuntimeException,当执行表达式抛出任何异常的时候,都会转化成运行时异常
+ * 如此一来,代码中就不用显示的try-catch转化成运行时异常
+ *
+ * @param expression Lambda表达式
+ * @param rteSupplier 转化运行时异常的表达式
+ * @param 运行时传入的参数类型
+ * @return {@link VoidFunc1Rt}
+ */
+ public static
VoidFunc1Rt
uncheck(VoidFunc1
expression, Supplier1 rteSupplier) {
+ Objects.requireNonNull(expression, "expression can not be null");
+ return t -> {
+ try {
+ expression.call(t);
+ } catch (Exception e) {
+ if (rteSupplier == null) {
+ throw new RuntimeException(e);
+ } else {
+ throw rteSupplier.get(e);
+ }
+ }
+ };
+ }
+
public interface FuncRt extends Func
{
- @SuppressWarnings("unchecked")
+ @Override
R call(P... parameters) throws RuntimeException;
}
public interface Func0Rt extends Func0 {
+ @Override
R call() throws RuntimeException;
}
public interface Func1Rt extends Func1
{
+ @Override
R call(P parameter) throws RuntimeException;
}
public interface VoidFuncRt
extends VoidFunc
{
- @SuppressWarnings("unchecked")
+ @Override
void call(P... parameters) throws RuntimeException;
}
public interface VoidFunc0Rt extends VoidFunc0 {
+ @Override
void call() throws RuntimeException;
}
public interface VoidFunc1Rt
extends VoidFunc1
{
+ @Override
void call(P parameter) throws RuntimeException;
}