这是一个图像处理应用程序。我在下面显示的代码用于创建图像文件并将完全处理的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
。
系统显示的屏幕截图:
然后我试着抓住确切的catch (FileNotFoundException e)
,但是Eclipse会让我把它改回IOException
。
Eclipse提示我的截图:
(它告诉我FileNotFoundException
已经被IOException
抓住了,所以最终我不得不删除它,这几乎可以追溯到我开始的地方。)
注意:之后我添加了NullPointerException
并且代码抓住了它,但仍然没有抓住IOException
catch (NullPointerException | IOException e)
系统显示的屏幕截图:
答案 0 :(得分:1)
如果你正确地捕获了异常,你打印它(我假设你在ui.warningSave();
方法上做了什么)会发生什么,但是你不会停止你的方法(或者return,exit,throw exception)所以程序到达catch(ui.hoanTat(dc);
)
eclipse的编译错误告诉你:
自ImageIO.write()
抛出IOException
后,您无法仅抓住FileNotFoundException
,因为它并未涵盖所有情况。
此外,编写catch (FileNotFoundException | IOException e)
也是错误的,因为FileNotFoundException是多余的 - 它在扩展它时已经被IOException覆盖了。