Добрый день, уважаемые.
Вот мы тут с коллегой спорим как лучше сделать.
Метод init, системный, вызывается системой (при инициализации системы), бросает SystemException — это изменить нельзя.
Этот метод вызывает мой метод methodA.
Внутри methodA могут возникать два типа Exception: Ex1 и Ex2.
В случае любого из этих Exception init должен бросить SystemException.
Вопрос в том где обработать Ex1 и Ex2 и бросить SystemException: в методе methodA или в методе init (т.е. "внизу" или "вверху").
Вариант 1:
void init() throws SystemException {
try {
methodA();
catch(Ex1 e1) {
log.error(e1);
throw new SystemException();
}
catch(Ex2 e2) {
log.error(e2);
throw new SystemException();
}
}
void methodA() throws Ex1, Ex2 {
lala1(); //throws Ex1
lala2(); //throws Ex2
}
Вариант 2:
void init() throws SystemException {
methodA();
}
void methodA() throws SystemException {
try {
lala1(); //throws Ex1
lala2(); //throws Ex2
catch(Ex1 e1) {
log.error(e1);
throw new SystemException();
}
catch(Ex2 e2) {
log.error(e2);
throw new SystemException();
}
}
Оба варианта будут работать одинаково правильно. Вопрос в том, как лучше, красивее.. где лучше стиль.