如何处理来自Web服务的错误

时间:2013-05-16 23:21:43

标签: java spring rest error-handling

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

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

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

public User getUser(String userId)

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

  1. 为每个错误响应代码定义不同的异常(运行时),并将这些异常添加到方法签名
  2. 使用单个异常(例如UserException)并使用不同的消息。
  3. 做别的事
  4. 任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:2)

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

class AccountException
    extends Exception {
}

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

class AccountLockedException
    extends AccountException {
}

class AccountDeletedException
    extends AccountException {
}
等等......通过这种方式,您可以清楚地看到它,并且不必查看所有例外情况。不确定我是否清楚,这是我的第一个答案。 GL!

答案 1 :(得分:0)

我会为一个类别创建一个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;
        }
    }