2013-05-16 55 views
0

对不起,我是Spring和Java的新手,这可能会涉及很多次,但我想获得一些建议。如何处理来自网络服务的错误

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

在DAO我要创建这样的方法:

public User getUser(String userId) 

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

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

任何帮助将高度赞赏。

回答

2

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

class AccountLockedException 
    extends AccountException { 
} 

class AccountException 
    extends Exception { 
} 

,那么你对所有涉及账户的问题,如错误的帐户扩展延伸

class AccountDeletedException 
    extends AccountException { 
} 

etc ...这样你可以清楚地看到它,而不必查看所有例外情况。不知道我是否清楚,这是我第一次回答。 GL!

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; 
     } 
    } 
+0

谢谢你们,我会试试这两个。只是想检查是否有任何其他的方式来做到这一点,而不使用Java异常? – Swordfish