исключение бросать Java, не ловя его? - PullRequest
12 голосов
/ 02 декабря 2011

Можно ли вызвать исключение, не перехватывая его?

Пример

public void foo() throws SomeException{
    // ....
    if (somethingCatestrophic) throw new SomeException();
    // ....
}

Теперь я хочу вызвать foo, но не хочу отлавливать какие-либо ошибки, поскольку исключения никогда не должны создаваться во время выполнения (если нет ошибки)

Ответы [ 4 ]

32 голосов
/ 02 декабря 2011

Если это не то, что вы планируете и восстанавливаете локально, в этом случае, вероятно, лучше использовать непроверенное исключение, например, производную RuntimeException.

1 голос
/ 02 декабря 2011

Почему бы вам не поймать это внутри метода?

Просто используйте try catch block и продолжайте, если исключение незначительно и не влияет на поведение вашей программы.

1 голос
/ 02 декабря 2011

Вы можете избежать перехвата исключения, но если возникнет исключение и вы его не перехватите, ваша программа прекратит выполнение (сбой).

Нет способа игнорировать исключение. Если вашему приложению ничего не нужно делать в ответ на данное исключение, вы просто поймаете его и ничего не сделаете.

try {
  ...some code that throws an exception...
} catch (SomeException ex) {
  // do nothing
}

ПРИМЕЧАНИЕ. Однако это часто считается плохим стилем, и люди могут сказать вам об этом. Часто цитируемая причина заключается в том, что, даже если вы не собираетесь ничего делать, за исключением того, что в большинстве случаев вы должны хотя бы где-то регистрировать это, уведомлять пользователя или предпринимать другие соответствующие действия в зависимости от того, какое приложение вы используете. делать, и что вызвало исключение в первую очередь. Если вы не уверены, почему выдается исключение (возможно, это ошибка, которую вы еще не решили), то, как правило, вы должны хотя бы зарегистрировать ее, чтобы потом ее выяснить.

0 голосов
/ 02 декабря 2011

Если SomeException является проверенным исключением, метод, который вызывает foo(), должен будет либо перехватить это исключение и обработать его, либо также объявить для выброса SomeException или его родителя.

Если SomeException является исключением во время выполнения, то методы, которые его вызывают, не должны его перехватывать.

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