try catch finally相关

finally 的主要的作用说是用于释放资源,但是释放资源的代码写在try catch 外不也能释放么,为啥非得放在finally里,
finally到底有啥用

try 出现异常,走到了catch里面,没毛病,如果catch里面再出现异常,那么try catch以外的代码都不会走了,不要说什么保证catch里面不会出现异常,你如果能保证不穿鞋异常,那么try catch都是不被需要的,那么你想在哪里关闭资源都可以

如果你在catch里面的代码出现异常了,就不会继续往下执行了。finally是为了保证无论发不发生异常,finally里面的代码都会被执行

finally表示最终执行的代码!

finally块内的代码在try语句块退出时**一定**能得到执行的, 是防止资源泄露的有利工具.
比方说, 你的try捕获到了异常, 进入catch, 然而catch有可能会退出, 原因有使用了return, break, 或者又造成了新的异常, 那么有finally在就能保证该块内的代码得到释放, 而如果在try块后写清理代码, 即使很小心也容易出bug造成资源泄露.

另外, 在上述的具有资源回收的情况下, java 1.7提供了try-with-resources Statement

finally保证无论成功还是失败,都要被执行的代码,例如释放资源,写日志等