Джошуа Блох в своей книге «Эффективная Java» пишет:
«Используйте тег Javadoc @throws, чтобы задокументировать каждое непроверенное исключение, которое метод может бросать, но не используйте ключевое слово throws для включения неотмеченных исключения в объявлении метода. "
Что ж, это действительно звучит разумно, но как узнать, какое непроверенное исключение может вызвать мой метод?
Давайте подумаем о следующем классе:
public class FooClass {
private MyClass[] myClass;
/**
* Creates new FooClass
*/
public FooClass() {
// code omitted
// do something with myClass
}
/**
* Performs foo operation.<br />
* Whatever is calculated.
* @param index Index of a desired element
* @throws HorribleException When something horrible happens during computation
*/
public void foo(int index) {
try {
myClass[index].doComputation();
} catch (MyComputationException e) {
System.out.println("Something horrible happened during computation");
throw new HorribleException(e);
}
}
}
Я задокументировал HorribleException, но совершенно очевидно, что Метод foo также может генерировать непроверенные исключения java.lang.ArrayIndexOutOfBoundsException . Чем сложнее становится код, тем труднее думать обо всех непроверенных исключениях, которые может генерировать этот метод. Моя среда IDE не очень помогает мне в этом и не помогает любой инструмент. Поскольку я не знаю никакого инструмента для этого ...
Как вы справляетесь с такой ситуацией?