我有一个删除一些文件的方法:
void deepDelete(Path root) {
Files.walk(root)
.filter(p -> !Files.isDirectory(p))
.forEach(p -> { try { Files.delete(p); }
catch (IOException e) { /* LOG */ }
});
}
try/catch 块降低了操作的可读性,尤其是与使用方法引用相比:
void deepDelete(Path root) throws IOException {
Files.walk(root)
.filter(p -> !Files.isDirectory(p))
.forEach(Files::delete); //does not compile
}
不幸的是,该代码无法编译。
有没有办法应用在终端操作中引发检查异常并简单地“重新引发”任何异常的操作?
我知道我可以编写一个包装器,将检查的异常转换为未经检查的异常,但如果可能的话,我宁愿坚持使用 JDK 中的方法。