在单独的方法中处理异常是一种反模式吗?
假设我有一个执行一些低级 IO 的方法,并且可能会抛出 IOException,并且我有一个方法 foo() 多次调用低级 IO 方法。在第三种方法中进行异常处理是否有意义,如下所示:
public void foo() throws MyCheckedException {
// some stuff
goDoSomeIO(path1)
// some other stuff
goDoSomeIO(path2)
// some more stuff
goDoSomeIO(path3)
}
private String goDoSomeIO(String filePath) throws MyCheckedException {
try {
doSomeIO(filePath);
} catch (IOException ioe) {
LOG.error("Io failed at: " + filePath);
throw new MyCheckedException("Process failed because io failed", ioe)
}
}
private String doSomeIO(String filepath) throws IOException {
//io stuff
}
我发现这比 doSomeIO 方法执行自己的异常处理或者异常处理发生在 foo 中更具可读性。
最佳答案
我经常看到在较高级别处理较低级别方法的异常的代码,无论较低级别只是一个方法还是多个方法。
这很常见,并且是由于分离的关注点造成的:低级别的东西负责推送文件,高级的东西捕获异常以确定复杂的操作是否有效。我不认为把IO的处理和IO的处理放在不同的方法里有什么问题。 (我会尝试给他们一些名字,但这可以解释其目的。我不喜欢 goDoWhatever 和 doWhatever)
关于java - 为了提高可读性,在单独的方法中进行异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55380871/