исключение Java-цепи - PullRequest
       8

исключение Java-цепи

2 голосов
/ 03 июня 2009

У меня вопрос по поводу исключения из цепочки

try{ } catch(Exception e) { throw new SomeException(); } 

если мне так нравится мое затмение вызовет ошибку при броске строки new SomeException (); с указанием «необработанное исключение» и я должен поставить что-то вроде

try{ } catch(Exception e) {
                            try{ throw new SomeException(); } catch(Exception e){} 
                           }

почему так должно быть потому что учебник, который я прочитал .example http://java.sys -con.com / node / 36579 , не должен делать это

Ответы [ 4 ]

8 голосов
/ 03 июня 2009

Вам нужно будет объявить, что метод throws еще одно исключение, если исключение является проверенным исключением .

(«Классами непроверенных исключений являются класс RuntimeException и его подклассы, а также класс Error и его подклассы. Все остальные классы исключений являются проверенными классами исключений.» - Спецификация языка Java, второе издание, раздел 11.2 )

Например, вместо:

void someMethod {
    try {
        // Do something that raises an Exception.
    } catch (Exception e) {
        throw new SomeException();    // Compile error.
    }
}

A throws необходимо добавить в объявление метода:

void someMethod throws SomeException {
    try {
        // Do something that raises an Exception.
    } catch (Exception e) {
        throw new SomeException();    // No problem.
    }
}
5 голосов
/ 03 июня 2009

Зависит от того, является ли SomeException проверенным исключением или нет. Если это так (оно расширяет Exception, но не RuntimeException), тогда вы должны объявить его в методе или вместо этого выдать RuntimeException.

Вот как должен выглядеть ваш код:

...) throws SomeException {
....
try {
 ....
} catch (Exception e) {
   throw new SomeException(e);
}

Если у какого-то исключения нет конструктора, который принимает исключение, сделайте следующее:

throw (SomeException) new SomeException().initCause(e);

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

3 голосов
/ 03 июня 2009

ваш метод должен объявить, что может вызвать это исключение. Итак, вы должны добавить:

throws SomeException {

в конце заголовка вашего метода.

1 голос
/ 03 июня 2009

Вам нужно добавить «throws SomeException» в объявление вашего метода. Вам необходимо указать любые типы исключений, которые выдает ваш метод, кроме исключений, которые происходят от RuntimeException.

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