java - 以单独的方法处理异常以提高可读性
问题描述
在单独的方法中处理异常是一种反模式吗?
假设我有一个执行一些低级 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.h 中更具可读性。
解决方案
我经常看到在较高级别处理较低级别方法异常的代码,无论较低级别只是一种方法还是多种方法。
这很常见,并且是由于分离的问题:低级别的东西负责推送文件,高级的东西捕捉异常以确定复杂操作是否有效。我认为将 IO 的处理和 IO 的处理放在不同的方法有什么问题。(我会试着给他们起个名字,但这解释了目的。我不是 goDoWhatever 和 doWhatever 的粉丝)
推荐阅读
- azure - 将文件从远程桌面 (RDP) 复制到 Azure Blob 存储
- python-3.x - 烧瓶 | JINJA 2:在上下文中导入宏的 render_template_string()
- swift - 真的不知道如何设置功能以识别单元格是否被选中
- c - 获取鼠标按钮状态非阻塞linux
- sql - Laravel updateOrCreate on hasOne 具有不同值的关系
- python - 获取 pymongo.errors.CursorNotFound: cursor id "..." not found
- javascript - 为什么我的 Firestore 权限不起作用?
- python - 按键过滤字典
- python - 在 for 循环中递增计数器以对简单数组求和
- git - 如何从 Heroku 保存文件?