Подтвердить что ты не робот

Должен ли я объявлять неконтролируемые исключения в спецификации бросков?

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

Если по какой-то причине я могу разумно ожидать, что в методе возникнет непроверенное исключение, следует ли добавить его в спецификацию throws? Или я должен держать спецификацию как можно короче?

4b9b3361

Ответ 1

Если по какой-то причине я могу разумно ожидать, что в методе возникнет непроверенное исключение, следует ли добавить его в спецификацию throws?

Так как непроверенные исключения указывают на ошибки программирования, следует избегать объявления их в предложении throws. Как правило, не следует пытаться поймать эти исключения, за исключением самого высокого уровня вашей программы. Для этого правила существует несколько исключений (каламбур) - например, в производственном коде вы должны ловить NumberFormatException.

Примечание.. Иногда авторы фреймворков делают свой основной выбор наследованием RuntimeException (например, HibernateException), Исключения также должны быть пойманы.

Ответ 2

Это дизайнерское решение. Обычно ты этого не делал. Но если вы считаете, что для пользователя вашего кода важно уловить Exception, то это способ намекнуть, что он это делает. Другим способом было бы просто добавить его в документацию и объяснить, почему важно поймать Exception.

Ответ 3

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