Должен ли я объявить непроверенное исключение?

У меня есть метод, который вызывает другой метод, как это:

public void m1() {
    m2(10);
}

public void m2(int v) {
    if(v < 10)
        throw new MyException();
}

public class MyException extends RuntimeException{ }

Теперь я хотел бы уведомить клиентов, которые собираются использовать m1() что это может бросить MyException, Это нормально, если я объявлю это так:

public void m1() throws MyException{
    m2(10);
}

Я не уверен в этом, как я использовал throws декларация с проверенными исключениями. Это часто случается с непроверенными?

2 ответа

Вы можете сделать это - и это будет отображаться в Javadoc, я считаю. Но это не заставит звонящих обрабатывать исключение, поэтому вы все еще в основном полагаетесь на то, что пользователи (разработчики называют ваш код) достаточно усердны для проверки документации. Если вам этого достаточно, продолжайте, иначе измените MyException быть проверенным исключением.

Что касается того, часто ли объявляют непроверенные исключения, которые могут быть выброшены - я бы сказал, что видел это достаточно часто, чтобы это не было особенно удивительным, но это не широко используемая практика.

Вы можете объявить непроверенное исключение в throws предложение, но, как вы заметили, это не будет иметь никакого реального влияния, кроме того, что означает, что метод может его выбросить. Это определенно не редкость, и JDK, кажется, принял этот подход (см., Например, Integer#parseInt).

Независимо от того, если вы объявите это в throws или нет, вы должны документировать это в javadoc метода, который является первым местом, которое люди, использующие ваш метод, вероятно, будут искать.

Другие вопросы по тегам