如何将错误处理方法转换为 Lambda 函数

Posted

技术标签:

【中文标题】如何将错误处理方法转换为 Lambda 函数【英文标题】:How can I convert an error handling method into a Lambda function 【发布时间】:2021-09-18 10:24:47 【问题描述】:

有没有办法将此方法修改为 lambda 函数?

public static <T> void checkResponse(Response<T> response, String errorMessage, Map<String,String> values) throws IOException 
    if (!response.isSuccessful()) 
        String message = StringSubstitutor.replace(errorMessage, values);
        logger.error(message);
        throw new RuntimeException(message, null);
    

【问题讨论】:

你为什么要这么做? 我正在学习实现 lambda,并试图围绕如何将我拥有的某些常用方法转换为 lambda。 请注意,虽然您可以 执行此操作,但这里没有任何 的想法可以转换为 lambda。 【参考方案1】:

首先,定义一个带有适当参数的接口,然后你可以使用 lambda 来实现它。

@FunctionalInterface
interface ResponseHandler<T> 
   void handleResponse(Response<T> response, String errorMessage, Map<String,String> values);

// ...
ResponseHandler handler = (response, errorMessage, values) -> 
    if (!response.isSuccessful()) 
        String message = StringSubstitutor.replace(errorMessage, values);
        logger.error(message);
        throw new RuntimeException(message, null);
    
;
// Call it:
handler.handleResponse(...);

【讨论】:

感谢您的回答!我看到一个编译错误目标方法是通用的。我应该以不同的方式处理泛型类型 Response 吗? 我用类型参数更新了界面,但仍然看到同样的错误。

以上是关于如何将错误处理方法转换为 Lambda 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何将 AWS lambda 调用划分为独立的处理任务

如何在 Javascript 中包装函数?

如何处理 Parse.com 将 HTTP 错误转换为 NSError?

AWS lambda 函数-“发生错误:收到来自 Lambda 的错误响应:已处理”

如何使用 C++ lambda 将成员函数指针转换为普通函数指针以用作回调

在多个 AWS Lambda 中处理相同的函数名称