2014-09-23 3 views
-1

У меня есть этот блок:Управление Блок Java

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

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

    @Override 
    public void onFailure(Throwable cause) { 

    } 
}); 

Мой вопрос заключается в следующем:

вызов «Логин» метод, который я выполнить вход на моем сервере, и если успешна я хожу в OnSuccess метод, то я перейдите в onFailure. Моя проблема заключается в том, что я могу пойти в методе «OnFailure» по 2 причинам:

1) имя пользователя или пароль неверны

2) Был проблема подключения к серверу

Я хотел бы см. другое сообщение об ошибке. например, если неправильное имя пользователя, я хотел бы увидеть «имя пользователя неверно», а если вы не установили соединение с сервером, я вижу «повторите попытку позже».

Но для этого мне нужно знать точную причину ошибки, как мне это сделать?

Спасибо за ваше время

+1

Почему вы не используете поля 'cause'? Не зная, что именно вызовет ваш обратный вызов, мы не можем вам помочь. – hexafraction

ответ

0

Метод onFailure() имеет параметр Throwable cause. Это фактическое исключение (или ошибка), которое произошло.

Обычно достаточно проверить фактический класс cause, чтобы узнать, в чем проблема. Например, если cause является экземпляром java.io.IOException, то это, вероятно, какая-то ошибка ввода-вывода, а не неправильное имя пользователя/пароль.

Мое предложение было бы проверить, что класс исключения возвращается при вводе неправильного имени пользователя или неверный пароль (попробовать оба, в случае, если они возвращают разные значения), то код что-то вроде этого:

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

В любом случае вы должны зарегистрировать точное исключение, чтобы администраторы могли его отлаживать.

Смежные вопросы