java - 在java 8中合并try catch

标签 java try-catch

我是 java 8 的新手。

以下是我的代码,

File file = new File("C:\\abc\\def\\ghi"); //def, ghi doesnot exists
file.mkdirs();
try {
    file.createNewFile(); //throw IOE
} catch (IOE ioe) {
}  
try (BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(file));) {
       //some logic
} catch (IOE ioe) {
}

如何以 java 8 方式合并/重构两个 try-catch。

最佳答案

这取决于您所说的“合并”的含义。

如果您只是想拥有一个 catch block ,那很简单:只需将第二个 try 移到第一个 block 内即可:

File file = new File("C:\\abc\\def\\ghi"); //def, ghi doesnot exists
file.mkdirs();
try {
    file.createNewFile(); //throw IOE
    try (BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(file))) {
       //some logic
    }
} catch (IOE ioe) {
    // Common handling of IOE.
}

我不会尝试进一步合并它;第二个/内部 try 具有关闭流的语义。这是一件好事,需要一个 try block 来完成。

关于java - 在java 8中合并try catch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37785339/

相关文章:

javascript - 如何在回调内部抛出错误,并在外部捕获它

ios - 尝试使用 NSUrl(fileURLWithPath) 捕捉

java - 在 Java 中自定义 catch block 并在 Eclipse 中启用智能插入

java - 如何找到根元素值?

Java 按位非

java - Android ListView 未在滚动时重新绘制

java - 无法启动嵌入式容器

python - 在 Python 中使用 try-except-else 是一个好习惯吗?

php - 在 PHP Try Catch block 中抛出异常

Java 文件不会在所有行的末尾保存新行