一般都是try-catch,或者try-catch-finally,突然发现还有try 后面直接跟finally?????,这种try-finally有什么适用场景呢????
跟做事一样,有些Exception撒手不理没关系,但是要守住finally的底线。
finally表示无论上面是啥,都执行的逻辑,除非上面返回了,使用的场景比如创建了文件流,无论上面的逻辑如何,产生了什么异常,都要关闭文件流,以免内存泄漏
用于不管怎样都要做某些事情,比如释放资源,即使出错了,也会进入final
可以直接使用try{...}finally{...},finally里一般放在任何情况下都要执行的处理,比如数据库资源和文件流资源的最后释放,释放不必要的内存占用
不是说有try就一定有catch,在JDBC中就有这种写法:
Class.forName(driver);
try(
Connection conn = DriverManager.getConnection();
Statement stmt = conn.createStatement();)
{
return stmt.executeQuery(sql);
}finally{
... //这里用来完成一些程序中没有完成的事情的处理
}
这里的写法我相信你应该能够理解,因为这里的try作用就是当程序出现异常的时候自动关闭数据库的连接,所以有try(){}就不需要显示关闭连接
finally是代码必须执行的部分,适用场景很多:connection的关闭,流的close等等,用于释放内存。
希望能够帮到你。
可以啊,可以省略catch的啊。但是try语句是必须的。
finally中放置一定要执行的语句,通常用于流的关闭,资源的释放。我觉得写入文件的时候就可以用到此方法,不管文本是否存在,其实都会生成新的(或覆盖原有的)文本,但是最终流都是要关闭的。