【发布时间】:2014-12-02 18:10:17
【问题描述】:
在重构我的代码时,我意识到一些代码是重复的,除了它们的异常处理。我想知道这些代码是否被认为是重复重构,如果是,如何?
具体样本: 例如,我有两种方法。
void fun1() {
try {
foo();
} catch (Exception ex) {
handle1();
}
}
void fun2() {
try {
foo();
} catch (Exception ex) {
handle2();
}
}
【问题讨论】:
-
您能否尝试提供一个更完整的示例来说明为什么您需要将异常处理包装在两个单独的(否则相同的)函数中?对我来说,这似乎通常表明设计不佳,可以在其他地方修复,但很难说。
-
我知道从不建议捕获一般异常。但是,我面临的问题可能是。我正在捕获相同的异常类型,但在 fun1() 和 fun2() 中。我确实有不同的处理机制
-
那么你会(理论上)以不同的方式处理相同的异常类型吗?例如。在 fun1 用例和 fun2 用例中,RuntimeException 的处理方式会有所不同吗?
-
说我正在写一些测试。相同的代码在不同的测试中,我打算有不同的logs/data-chart/error-logs,所以基本上捕获相同的异常类型,但处理方式不同
-
这似乎是一种可以通过多态性解决的问题 - 只需重载您的
handle方法,对吗?
标签: java coding-style