我在一个具有相同异常处理的类中有一些私有方法。它们的正文代码引发了相同的异常类型,代码处理是相同的。
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子句,不仅仅是示例中的一个。
答案 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子句。