在Java中提取几种方法的常见异常处理代码

时间:2011-04-20 09:46:24

标签: java exception-handling

我在一个具有相同异常处理的类中有一些私有方法。它们的正文代码引发了相同的异常类型,代码处理是相同的。

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 个答案:

答案 0 :(得分:5)

创建一个界面:

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
}

答案 1 :(得分:2)

您可以创建一个他们都呼叫的handleException(IOException ioe)方法。

答案 2 :(得分:1)

你的直觉很好 - DRY是一件好事。但是不要这样做。您的代码将难以阅读。

确保你的catch块真正处理异常而不仅仅是吞下它。如果你的班级没有提供补救措施,我会说扔掉它并让客户弄明白该做什么更好。

答案 3 :(得分:-1)

我正在考虑在一个地方进行尝试捕捉处理以及它们之间的方法逻辑,但我猜这个世界会太完美了。实际上我在方法中有几个catch子句。