在文件输出流(FileOutputStream)的写入操作和关闭资源操作中,比如说文件写入失败或者关闭资源失败等等,我们不能把这些异常总是抛给虚拟机,不然JVM会生气的,我们已经长大了要自己学会处理这些异常。
如:
try {
fos = new FileOutputStream("d:\\a.txt");
fos.write(100);
} catch (IOException ex) {
throw new RuntimeException("文件写入失败!");
} finally {
try {
if (fos != null)// 若流对象新建失败,是没有占用资源的,故无须清理
fos.close();
} catch (IOException ex) {
throw new RuntimeException("关闭资源失败!");
}
}
上面代码处理了两个异常,分别是写入异常和关闭资源异常,其中关闭资源操作在有占用资源的情况下是必须执行的,因此放在finally中,而关闭资源操作也有可能出现异常,故嵌套了try...catch对其处理。