Приветствую!
Допустим, у меня есть приложение с консольным вводом/выводом. Пользователь может вводить команды, а программа, в случае каких-то неверных действий юзера, подсказывает решение данной проблемы (checked exceptions).
Пусть пользователь повзаимодействовал с консолью и вызвал метод:
public String foo() throws BlaBlaException, BlaFooException, FooFooExcpetion, InfinityException { // и так может очень много
//bla bla
throw new BlaBlaExcpetion();
//. . .
// bla bla
throw new InfinityException();
}
Представим, что все эти исключительные ситуации должен обработать сам пользователь. То есть, найдется в коцне концов уровень, который перехватит исключения и поможет юзверу.
Из примера метода видно, что здесь перебрасывается 4 исключения (throws ...) , и это уже немного глаза режет программисту. А если представить, что этих исключений будет не 4, а 10! А еще уровней перебрасывания будет штук 4-5! Это уже каким-то говнокодом попахивает... Или я не прав?
Это нормальная практика или есть иной подход к этому?P.S. Знаю, что можно сделать одного предка для всех этих исключений, засунуть в него string с объяснением проблемы и перебросить его. Но что потом? Мне придется через switch все случаи рассматривать...