Java的检查异常使程序员可以解决此类问题。(我认为这是一件好事,即使在地毯下扫除虫子也更容易。)
如果发生故障,您应该采取一些适当的措施。通常,处理应与引发异常的位置位于不同的层。
资源应正确处理,其格式为:
acquire();
try {
use();
} finally {
release();
}
切勿将acquire()try 放入try块中。切勿在acquire()和之间插入任何内容try(除了简单的赋值)。不要试图在单个finally块中释放多个资源。
因此,我们有两个不同的问题。不幸的是,Java语法将两者混为一谈。编写此类代码的正确方法是:
try {
final FileOutputStream rawOut = new FileOutputStream(file);
try {
OutputStream out = new BufferedOutputStream(rawOut);
...
out.flush();
} finally {
rawOut.close();
}
} catch (FileNotFoundException exc) {
...do something not being able to create file...
} catch (IOException exc) {
...handle create file but borked - oops...
}