【发布时间】:2015-06-01 21:56:55
【问题描述】:
我知道如何通过 if/else 检查文件是否存在,它在我之前的作业中有效:
File f = new File("file.txt");
if (f.exists() && f.canRead()) {
// Code goes here.
} else { } // Error message.
但是,如果我对缓冲图像做同样的事情,就像这样:
private BufferedImage img;
File f = new File("pic.png");
if (f.exists() && f.canRead()) {
img = ImageIO.read(f);
} else { } // Error message.
然后编译器要求 try/catch 或 @throws 违背了目的。我究竟做错了什么?将我所有的精灵打包在一个 .jar 中并将它们称为资源会更好吗(我打算在完成后这样做)?
如果这很重要,我在 JRE 1.6 上运行,文件检查在 switch case 语句中。
【问题讨论】:
-
我现在使用 try/catch 并且它有效,但我的教授坚持认为,如果我能提供帮助,我必须尽量避免异常。
-
@theUG.. 我认为,通过说
try to avoid exception- 你的教授的意思是,处理它们。 -
你需要向你的教授澄清他通过避免例外的意思。大多数 IO 方法都会抛出 IOException
-
@RohitJain 我们与他进行了一些详细的讨论,他的意思是,如果我确切知道会发生什么,我应该尝试处理它而不诉诸 try/catch fall -返回。
-
@RohitJain 你的答案去哪儿了?我认为这是迄今为止最好的,我想通过更多问题来澄清一些事情。