java - 如何将 catch finally 重组为 Java 8 中的一种方法?

标签 java java-8

Java 8 的新手,我想优化我的代码如下:

public Response create() {
    try{
        ...
    } catch (Exception e) {
        codeA;
    } finally {
        codeB;
    }
}

public Response update() {
    try{
        ...
    } catch (Exception e) {
        codeA;
    } finally {
        codeB;
    }
}

我有很多方法使用相同的方式来捕获异常并最终执行相同的操作,是否可以用 Java 8 中的方法替换下面的通用代码?这样我就可以优化使用此公共(public)代码的所有方法。

} catch (Exception e) {
    codeA;
} finally {
    codeB;
}

最佳答案

取决于您在 ... 中执行的操作。你可以这样做:

private Response method(Supplier<Response> supplier) {
    try{
        return supplier.get();
    } catch (Exception e) {
        codeA;
    } finally {
        codeB;
    }
}

并像这样调用:

public Response create() { return method(() -> { ... for create }); }
public Response update() { return method(() -> { ... for update }); }

关于java - 如何将 catch finally 重组为 Java 8 中的一种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54041246/

相关文章:

Java 8 : how to use lambda expressions on JoinRowSets?

java - 如果鼠标位于框架内,如何使框架可见,而当鼠标不在 Java 中时,如何使框架不可见?

java - Spring Boot -如何根据构建环境 QA 或 PROD 更改 Spring Boot 应用程序 jar 名称

java - JSONObject 类型的 getBackMysql() 方法未定义

java - Linq C# 中 Java 的 Stream#Peek 方法的等价物是什么?

java - 如何使用 CrudRepository 将修改后的数据追加到数据库中,而不是替换 SpringBoot 中的数据

java - Android - 服务器无法处理您的 apk - 大小限制?

java - ConcurrentHashMap 中的并发级别

java - 如何在JAVA中克隆 "class tree"与其他类名?

java - 如何将 Java lambda 表达式用于正则表达式