2014-09-23 107 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 
} 

無論如何,您應該記錄確切的異常,以便管理員可以對其進行調試。