Java 如何处理来自web服务的错误

Java 如何处理来自web服务的错误,java,spring,rest,error-handling,Java,Spring,Rest,Error Handling,很抱歉,我是Spring和Java新手,这可能会涉及很多次,但我想得到一些建议 我正在创建一个SpringWeb应用程序,它需要从现有的基于REST的XMLWeb服务中检索用户数据。我将创建一个域对象、服务和DAO,它使用SpringREST模板来调用web服务 在DAO中,我将创建如下方法: public User getUser(String userId) 如果出现问题(例如,如果用户帐户被锁定或被删除),web服务将返回200响应,并在XML响应中输入错误代码。这些错误应该显示在应用程

很抱歉,我是Spring和Java新手,这可能会涉及很多次,但我想得到一些建议

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

在DAO中,我将创建如下方法:

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

  • 为每个错误响应代码定义不同的异常(运行时),并将其添加到方法签名中
  • 使用单个异常(例如UserException)并使用不同的消息
  • 做点别的

  • 非常感谢您的帮助。

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

    class AccountException
        extends Exception {
    }
    
    然后针对所有涉及帐户问题的错误扩展帐户扩展,例如:

    class AccountLockedException
        extends AccountException {
    }
    


    等等。。。通过这种方式,您可以使其非常清晰,并且不必查看所有的异常。我不太清楚,这是我的第一个答案。德国劳埃德船级社

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

    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异常的情况下实现这一点?
    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;
            }
        }