小编aga*_*kiy的帖子

在Stream API中使用checked decorator函数是否是一个很好的解决方案?

我正在使用Java 8 Stream API,并且我们知道它不支持java.util.function中任何功能接口内的已检查异常.

我通常必须在流操作中使用带有已检查异常的方法,并且我已经编写了CheckedFunction装饰器以在这些操作中使用:

import java.util.function.BiFunction;
import java.util.function.Function;

public interface CheckedFunction<T, R, E extends Throwable> {

    R apply(T t) throws E;

    static <T, R, CE extends Throwable, UCE extends RuntimeException> Function<T, R> checked(
            CheckedFunction<T, R, CE> checked, Function<CE, UCE> exceptionHandler) {
        return (t) -> {
            try {
                return checked.apply(t);
            }
            catch (RuntimeException | Error e) {
                throw e;
            }
            catch (Throwable e) {
                // can't catch - compiler error
                if (e instanceof InterruptedException) {
                    Thread.currentThread().interrupt();
                }
                throw exceptionHandler.apply((CE) e); …
Run Code Online (Sandbox Code Playgroud)

java lambda exception function java-stream

6
推荐指数
1
解决办法
319
查看次数

标签 统计

exception ×1

function ×1

java ×1

java-stream ×1

lambda ×1