【问题标题】:Encapsulating common exception handling logic封装常见的异常处理逻辑
【发布时间】:2012-07-20 13:09:06
【问题描述】:

我有一系列 Web 服务方法调用,它们都遵循以下格式。每种方法的唯一区别是 httpRequest.methodName()。谁能想到我可以封装通用逻辑的方法?另请注意,我的环境是 J2ME。

public Response webserviceCall(Request request) {

    HTTPRequest httpRequest = new HTTPRequest(new ConnectionProperties());

    String errorMessage = "";
    String errorCode = "";

    try {
        // the only thing different
        httpRequest.methodName();
    } catch (SDKException e) {
        errorMessage = e.getMessage();
        errorCode = e.getErrorCode();
    }

    Error error = new Error(errorMessage,errorCode);

    return new Response(error);
}

【问题讨论】:

    标签: java oop object java-me encapsulation


    【解决方案1】:

    另一种方法是将代码放在抽象类中,并将其更改为调用抽象方法(例如,将其命名为进程):

    abstract class BaseWebService {
       public abstract Response process(HTTPRequest request) throws SDKException;
    
       public Response webserviceCall(Request request) {
    
           HTTPRequest httpRequest = new HTTPRequest(new ConnectionProperties());
    
           String errorMessage = "";
           String errorCode = "";
    
           try {
               process(httpRequest);
           } catch (SDKException e) {
               errorMessage = e.getMessage();
               errorCode = e.getErrorCode();
           }
    
           Error error = new Error(errorMessage,errorCode);
    
           return new Response(error);
       }
     }
    

    然后让您的每个服务扩展该类并根据需要实现process 方法

    class OneService extends BaseWebService {
    
       Response process(HTTPRequest request) throws SDKException{
            return request.methodName();
       } 
    }
    

    为了记录,这是Template Method Pattern

    【讨论】:

      猜你喜欢
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 2012-07-18
      相关资源
      最近更新 更多