Брось ошибку в вызывающий метод! - PullRequest
1 голос
/ 12 мая 2011

У меня есть класс потока, и в методе run я выполняю вызов веб-службы, этот вызов находится в перехвате попытки

try {
    // Make webs service call
}
catch (Exception e) {
    throw e;
}

Затмению это не нравится!

В принципе, я хочу выдать эту ошибку вызывающему методу и разобраться с ней там?

Ответы [ 4 ]

4 голосов
/ 12 мая 2011

Если вы генерируете проверенное исключение, исключение должно быть обработано либо с помощью try / catch, либо объявлено как выброшенное в сигнатуре метода.См. учебник по исключениям ;особенно часть о Три вида исключений .

3 голосов
/ 12 мая 2011

Да java.lang.Exception отмечен, поэтому вы не можете выбросить его (так как Runnable.run не объявляет никаких исключений в своем предложении throws; у него нет предложения throws). Вы могли только бросить RunTimeExceptions. Вам придется обрабатывать проверенные исключения - это то, что заставляет вас делать Java. Один из подходов - преобразовать Проверенное Исключение в RunTimeException, чтобы вы могли его выбросить. Но не забывайте, что это отдельный поток, так что следите за логикой обработки.

public class ThreadFun implements Runnable {

    public void run()  {

        // LEGAL
        try {

        } catch (RuntimeException e) {
            throw e;
        }

        // NOT LEGAL
        try {

        } catch (Exception e) {
            throw e;
        }           
    }
}
3 голосов
/ 12 мая 2011

Это потому, что вы переопределяете run(), и переопределение не позволит вам объявить более широкое исключение. Вы можете обернуть это в RuntimeException.

Сделай что-то вроде

 new Thread(new Runnable() {

            public void run() {
                try{
                   //your code
                }catch(Exception ex){
                    throw new RuntimeException(ex);//or appropriate RuntimeException
                }
            }
        }).start();

    }
0 голосов
/ 12 мая 2011

Вместо перехвата исключения добавьте throws Exception к сигнатуре метода.Это заставит вызывающий метод перехватить исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...