1. 正常情况下的资源泄露
FileOutputStream fos = newFileOutputStream(new File("test.txt"));
...
fos再也没有被关闭。
2. 异常情况下的资源泄露
1)
FileOutputStream fos = newFileOutputStream(new File("test.txt"));
fos.write(7); // write()发生异常,导致fos.close()没有被执行。
fos.close();
2)
FileOutputStream fos1 = newFileOutputStream(new File("test1.txt"));
FileOutputStream fos2 = newFileOutputStream(new File("test2.txt"));
fos1.close(); // close()发生异常,导致fos2没有close。—— close()会调用flush(),所以可能抛出异常。
fos2.close();
Java的try/catch的异常机制,是一种checked exception机制。目的是用来报告程序执行时出现的错误。
当异常发生时,程序不能继续执行,会退出。在这样的情况下探求“资源泄露”,意义不大,是舍本逐末的做法。
本文探讨了Java中两种常见的资源泄露情况:正常情况下未关闭的FileOutputStream导致的泄露,以及在异常处理中因异常发生而未能执行close()操作所造成的资源泄露。通过示例代码展示了如何防止这些问题,强调了正确管理和释放资源的重要性。
1130

被折叠的 条评论
为什么被折叠?



