这是一个图像处理应用程序。我下面显示的代码用于创建图像文件并将完全处理的 BufferedImage 保存到其中。
public static void saveAnh(BufferedImage anhHoanTat) {
String dc;
ui.save();
input.nextLine();
diachiluuanh = input.nextLine();
dc = diachiluuanh
+ diachi.substring(diachi.lastIndexOf("\\"), diachi.lastIndexOf("."))
+ "_ML."+ diachi.substring(diachi.lastIndexOf(".")+1);
File anhDaXuLy = new File(dc);
try {
ImageIO.write(anhHoanTat,diachi.substring(diachi.lastIndexOf(".")+1), anhDaXuLy);
} catch (IOException e) {
ui.warningSave();
}
ui.hoanTat(dc);
}
除了没有捕获 IOException 之外,一切正常。系统显示了错误,它是 FileNotFoundException
,据我所知,该异常也是一个 IOException
。
系统显示截图:
然后我 try catch 确切的一个 catch (FileNotFoundException e)
,但 Eclipse 会让我将其更改回 IOException
。
Eclipse 提示我的屏幕截图:
(它告诉我,FileNotFoundException
已经被 IOException
捕获,所以最终我不得不删除它,这几乎回到了我开始的地方。)
注意:之后我添加了 NullPointerException
,代码捕获了它,但仍然没有捕获 IOException
catch (NullPointerException | IOException e)
系统显示截图:
最佳答案
发生的情况是,您正确捕获了异常,并打印了它(我假设这就是您在 ui.warningSave();
方法上所做的事情),但随后您没有停止您的方法(返回、退出、抛出异常),因此程序到达最后一行,在 catch (ui.hoanTat(dc);
)
Eclipse 向您显示的编译错误:
由于 ImageIO.write()
抛出 IOException
,因此您不能仅捕获 FileNotFoundException
,因为它并未涵盖所有情况。
此外,编写 catch (FileNotFoundException | IOException e)
也是错误的,因为 FileNotFoundException 是多余的 - 它在扩展时已被 IOException 覆盖。
关于java - 当我尝试创建图像文件时,try-catch 没有捕获 IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47488639/