Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RMI+RemoteException - вернуть клиенту ошибку. 
:(
    Опции темы
Killer_13
  Дата 21.7.2011, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Здравств.
Вот такая вот ситуация.
Сервер RMI - есть такая вот функция на сервере. 
Код

@Override
    public String login(String username, String password) throws RemoteException {
        String sidTemp;
        if(!this.userMap.containsKey(username))
            throw new AcessDeniedException();
        if(!this.userMap.get(username).eqalsPassword(password))
            throw new AcessDeniedException();

        sidTemp=getSID();
        this.sidMap.put(sidTemp, this.userMap.get(username));
        return sidTemp;
    }


Как мне вернуть на клиент Стринг с например номером ошибки. которая бросается в случае 
Код

throw new AcessDeniedException();

Класс AcessDeniedException находится тоже на сервере.
Код

package exception;

import java.rmi.RemoteException;

public class AcessDeniedException extends RemoteException {

}


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

Это сообщение отредактировал(а) Killer_13 - 21.7.2011, 21:06
PM MAIL   Вверх
Killer_13
Дата 21.7.2011, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Кажется разобрался, а в принципе ничего и разбирать не нужно было, только нужно было хорошенько протестировать. smile
При вызове метода в котором есть RuntimeException на стороне клиента вызываемый метод должен быть заключен в 

Метод на стороне клиента.
Код

public void login(){
        try {
            String str = Main.getNetCon().login(this.login.getUserName_tf().getText(), String.valueOf(this.login.getPass_tf().getPassword()));
            System.out.println(str);
        } catch (RemoteException e) {
            System.out.println(e.getMessage()+ " Bla bla bla");
        }
    }
 
Таким образом можем ловить в catch свои ошибки с сервера. smile
Я все правильно понял? smile
PM MAIL   Вверх
Stolzen
Дата 22.7.2011, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: нет
Всего: 48



Правильнее использовать e.getCause() метод, и оборачивать исключения в RemoteException. А getCause() позволяет вычленить обернутое исключение. 

Это сообщение отредактировал(а) Stolzen - 22.7.2011, 13:12


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
Killer_13
Дата 22.7.2011, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 12.1.2008
Где: Germany

Репутация: нет
Всего: 1



Если можно - чуток поподробней - буду благодарен. smile
PM MAIL   Вверх
Stolzen
Дата 22.7.2011, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: нет
Всего: 48



Вот, набросал для примера:

Код

package exceptions;

import java.rmi.RemoteException;

public class RemoteExceptionTest {
    static public void main(String[] args) {
        RemoteExceptionTest test = new RemoteExceptionTest();
        
        try {
            test.login("login", "pass");
        } catch (RemoteException e) {
            Throwable cause = e.getCause();
            
            if (cause instanceof AcessDeniedException) {
                System.out.println("Access denied");
            }
        }
    }
    
    public String login(String username, String password) throws RemoteException {
        throw new RemoteException("access denied", new AcessDeniedException());
    }
}

class AcessDeniedException extends Exception {}



--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0425 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.