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

jil*_*t3d 6 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子句,不仅仅是示例中的一个.

Vla*_*nov 6

创建一个界面:

public interface Executor {

  void exec() throws Exception;

}
Run Code Online (Sandbox Code Playgroud)

在你班上:

checkForExceptions(new Executor() {

  @Override
  public exex() throws Exception {

    method1();

  }

});

private void checkForExceptions(Executor ex) {
try {
  ex.exec();
} catch (Exception e) [
  /// handling
}
Run Code Online (Sandbox Code Playgroud)


duf*_*ymo 2

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

确保您的 catch 块真正处理异常,而不仅仅是吞掉它。如果你的班级没有提供补救措施,我认为最好放弃它并让客户弄清楚该怎么做。