Извлечение общего кода обработки исключений нескольких методов в Java - PullRequest
4 голосов
/ 20 апреля 2011

У меня есть некоторый приватный метод в классе, который имеет равную обработку исключений. Их код тела вызывает одинаковые типы исключений, а обработка кода одинакова.

private void method1() {
  try {
     //make_the_world_a_better_place
  }
  catch(IOException ioe) {
     // ...
  }
}

private boolean method2(String str) {
  try {
     //make_a_cheesecake
  }
  catch(IOException ioe) {
     // ...
  }
}

Каков наилучший способ экстернализовать общую обработку исключений, поэтому, когда я внесу изменение в код обработки исключений одного из методов, изменение будет распространено на другие методы? Шаблонный метод будет полезен в этой ситуации, но я не хочу углубляться в иерархию классов.

РЕДАКТИРОВАТЬ: Есть несколько предложений catch, а не только одно, как в примере.

Ответы [ 4 ]

5 голосов
/ 20 апреля 2011

Создайте интерфейс:

public interface Executor {

  void exec() throws Exception;

}

в вашем классе:

checkForExceptions(new Executor() {

  @Override
  public exex() throws Exception {

    method1();

  }

});

private void checkForExceptions(Executor ex) {
try {
  ex.exec();
} catch (Exception e) [
  /// handling
}
2 голосов
/ 20 апреля 2011

Вы можете создать handleException(IOException ioe) метод, который они оба вызывают.

1 голос
/ 20 апреля 2011

Ваш инстинкт хорош - СУХОЙ - хорошая вещь. Но не делай этого. Ваш код будет труднее читать.

Убедитесь, что ваши блоки catch действительно обрабатывают исключение, а не просто его проглатывают. Если в вашем классе не предусмотрено исправление, я бы сказал, что было бы лучше бросить его и позволить клиентам понять, что делать.

0 голосов
/ 05 июля 2016

Я думал о том, чтобы сделать попытку-поймать в одном месте и логику метода между ними, но я думаю, что тогда мир будет слишком совершененНа самом деле у меня есть несколько предложений catch в методах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...