首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过返回值公开服务或抛出异常

通过返回值公开服务或抛出异常
EN

Stack Overflow用户
提问于 2014-11-07 12:32:07
回答 2查看 89关注 0票数 0

我想把服务定义为web服务。我定义了一个具有register名称的方法。它是以RegisterParam名称作为输入参数的类,以及以RegisterResult名称作为输出的返回类型。

代码语言:javascript
运行
复制
public class RegisterParam{
      String name;
      String family;
}

public class RegisterResult{
      Integer registr_id;
}

public interface Service{
      public RegisterResult register(RegistrParam param);
}

如果注册服务失败,而它的逻辑没有这样做,我有两种解决方案用于通知服务调用者:

  1. 在RegisterResult类中,将属性添加为result_code,并为其值添加枚举。如果它的值为零,则表示成功完成注册服务器,如果它的值为零,则注册服务失败,result_code显示失败的原因。
  2. 注册服务在失败时抛出异常,如果没有异常,则抛出意味着成功完成注册服务。

我的问题是:上面的解决方案是什么?为什么?

EN

回答 2

Stack Overflow用户

发布于 2014-11-07 12:45:35

我认为你应该有两种不同的设想:

1)异常发生,就像某些环境(例如数据库)不可用一样。在这种情况下,我将抛出一个异常,该异常将由web服务实现自动转换为SOAPFault。这个方法的优点是,您的服务调用方也得到了一个异常,并且可以通过它的异常处理来处理它。

2)预期的业务“错误”会发生,就像用户没有登录或没有提供必要的信息使服务能够成功地完成一样。您的web服务的调用方接收到一个响应消息,调用方必须对其进行解释,并可能希望将其显示给提供信息的用户。

最后,这取决于您提供给您的界面用户的接口契约!最重要的是描述您的服务如何处理不同的错误场景。

票数 0
EN

Stack Overflow用户

发布于 2014-11-07 13:09:29

案例1没有结果:

代码语言:javascript
运行
复制
public interface Service{
    public void register(RegistrParam param);
}

在这种情况下,您的服务可以发送类似于200的HTTP状态码。您的客户将以下列方式解释状态代码:

  • 200:好的,我注册了
  • 不知道为什么但失败了..。

如果您想了解发生了什么,以及为什么您的请求失败了400错误,您必须检查您的服务器日志或类似的东西。

案例2及其结果:

代码语言:javascript
运行
复制
public interface Service{
    public Response register(RegistrParam param);
}

我总是向我的客户发送一个响应对象:

代码语言:javascript
运行
复制
public class Response {

    private ResponseStatus status;     // enum: (OK, ERROR, BAD_REQUEST)
    private ResultType     type;       // enum: (RegisterResult, LoginResult etc...) defines how to interpret the field "data"
    private Object         data;       // RegisterResult.java as jsonstring or Exception.java as jsonstring etc...
    private long           time = -1L; // execution time

}

如果我在开发我的客户,我总能理解为什么我的请求失败了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26801326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档