Java中的垃圾回收机制,也就是GC不会回收任何物理资源,垃圾回收机制只回收堆内存中对象所占用的内存,所以其他的物理资源需要用finally来回收. 如果try块中的某条语句引起了异常,该异常就会被catch块捕获,但是try块异常语句后面的其他语句通常不会获得执行机会,这将会导致该语句后的资源回收语句得不到执行,所以为了保证一定能回收try块中打开的物理资源,就要用到finally块. 不管哪一个catch块被执行,甚至在try块中有continue/break/return连,finally