2014-09-23 72 views
-1

我有这样的块:管理模块的Java

ConnectToServer.login(user, pw, new CallbackVoid() { 

    @Override 
    public void onSuccess() { 
     onSuccessLogin(pw, user); 
    } 

    @Override 
    public void onFailure(Throwable cause) { 

    } 
}); 

我的问题是这样的:

呼叫“登录”的方法我在我的服务器上进行登录,如果是成功的,我去的onSuccess方法,否则我去失败。 我的问题是,我可以在“onFailure处”的方法去有2个原因:

1)用户名或密码不正确

2)有连接到服务器

我想一个问题看到不同的错误消息。 例如,如果用户名错误我想看到“用户名不正确”,而如果你还没有建立到服务器的连接,我看到“稍后再试”。

但要做到这一点,我需要知道错误的确切原因,我该怎么办?

感谢您的时间

+1

为什么不使用'cause'的字段?不知道到底会给你回拨什么,我们无法真正帮助你。 – hexafraction 2014-09-23 00:14:28

回答

0

onFailure()方法具有Throwable cause参数。这是发生的实际异常(或错误)。

通常只需检查cause的实际等级即可知道问题所在。例如,如果causejava.io.IOException的实例,那么它可能是某种IO错误,而不是错误的用户名/密码。

我的建议是要检查,当你输入一个错误的用户名或密码错误返回什么类异常的(都试一下,万一他们返回不同的值),那么代码是这样的:

if(cause instanceof TheBadUsernameOrPasswordException){ 
    //TODO manage your wrong username or password here 
}else{ 
    //TODO manage any other type of error here 
} 

无论如何,您应该记录确切的异常,以便管理员可以对其进行调试。