О хорошем стиле в делегировании исключений
От: AlexisVo  
Дата: 20.12.07 16:24
Оценка:
Добрый день, уважаемые.
Вот мы тут с коллегой спорим как лучше сделать.
Метод 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();
   }
}


Оба варианта будут работать одинаково правильно. Вопрос в том, как лучше, красивее.. где лучше стиль.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.