【问题标题】:How to handle errors from web service如何处理来自 Web 服务的错​​误
【发布时间】:2013-05-16 23:21:43
【问题描述】:

对不起,我是 Spring 和 Java 的新手,这可能会涉及很多次,但我想得到一些建议。

我正在创建一个 Spring Web 应用程序,它需要从现有的基于 REST 的 XML Web 服务中检索用户数据。我将创建一个域对象、服务和 DAO,它使用 Spring REST 模板来调用 Web 服务。

在 DAO 中,我打算创建一个这样的方法:

public User getUser(String userId)

如果出现问题(例如,如果用户帐户被锁定或被删除),Web 服务会返回 200 响应并在 XML 响应中放入错误代码。这些错误应该显示在应用程序中,我需要能够识别错误,以便向用户显示自定义错误消息。处理这些错误的推荐方法是什么,我应该:

  1. 为每个错误响应代码定义不同的异常(运行时)并将它们添加到方法签名中
  2. 使用单个异常(例如 UserException)并使用不同的消息。
  3. 做点别的事情

任何帮助将不胜感激。

【问题讨论】:

    标签: java spring rest error-handling


    【解决方案1】:

    您想通过扩展扩展为每种错误类型使用不同的异常。如果您有许多不同的,请尝试使用类继承对它们进行分组。一个例子会使它更简单。假设您有这两种错误,帐户删除和帐户锁定,您会这样做:

    class AccountException
        extends Exception {
    }
    

    然后您为涉及帐户问题的所有错误扩展帐户扩展,例如:

    class AccountLockedException
        extends AccountException {
    }
    

    class AccountDeletedException
        extends AccountException {
    }
    

    等等...这样您就可以一目了然,而不必查看所有异常情况。不确定我是否足够清楚,这是我在这里的第一个答案。 GL!

    【讨论】:

      【解决方案2】:

      我会为一个类别创建一个 Exception 类。例如,对于所有与用户相关的异常,您可以创建如下内容: 这样,捕获一个异常并验证错误代码以找出导致异常的原因将是干净的。

      public class MyException extends Exception{
              public static final int ERR_USER_NOT_FOUND  = 101;
              public static final int ERR_DB_ACCESS_ERR = 500;
      
              private int errorCode;
              public MyException(int errCode){
                  this.errorCode = errCode;
              }
      
              public int getErrorCode() {
                  return errorCode;
              }
          }
      

      【讨论】:

      • 谢谢你们,我会试试这两个。只是想检查是否有其他方法可以在不使用 Java 异常的情况下执行此操作?
      猜你喜欢
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多