lrj1596
lrj1596
采纳率85%
2016-03-23 13:01 阅读 1.9k
已采纳

Java异常处理中居然有个try-finally????

1

一般都是try-catch,或者try-catch-finally,突然发现还有try 后面直接跟finally?????,这种try-finally有什么适用场景呢????

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

8条回答 默认 最新

  • 已采纳
    sinat_34353359 sinat_34353359 2016-03-23 15:10

    跟做事一样,有些Exception撒手不理没关系,但是要守住finally的底线。

    点赞 1 评论 复制链接分享
  • u010319440 星星89757 2016-03-23 13:03

    finally表示无论上面是啥,都执行的逻辑,除非上面返回了,使用的场景比如创建了文件流,无论上面的逻辑如何,产生了什么异常,都要关闭文件流,以免内存泄漏

    点赞 评论 复制链接分享
  • bdmh bdmh 2016-03-23 13:03

    用于不管怎样都要做某些事情,比如释放资源,即使出错了,也会进入final

    点赞 评论 复制链接分享
  • ale2012 MySomeday 2016-03-23 14:11

    可以直接使用try{...}finally{...},finally里一般放在任何情况下都要执行的处理,比如数据库资源和文件流资源的最后释放,释放不必要的内存占用

    点赞 评论 复制链接分享
  • Crabime Crabime 2016-03-23 14:23

    不是说有try就一定有catch,在JDBC中就有这种写法:
    Class.forName(driver);
    try(
    Connection conn = DriverManager.getConnection();
    Statement stmt = conn.createStatement();)
    {
    return stmt.executeQuery(sql);
    }finally{
    ... //这里用来完成一些程序中没有完成的事情的处理
    }
    这里的写法我相信你应该能够理解,因为这里的try作用就是当程序出现异常的时候自动关闭数据库的连接,所以有try(){}就不需要显示关闭连接

    点赞 评论 复制链接分享
  • David_Is_Me 你我他联盟 2016-03-23 14:26

    finally是代码必须执行的部分,适用场景很多:connection的关闭,流的close等等,用于释放内存。
    希望能够帮到你。

    点赞 评论 复制链接分享
  • wojiushiwo945you 毕小宝 2016-03-23 14:26

    可以啊,可以省略catch的啊。但是try语句是必须的。

    点赞 评论 复制链接分享
  • shuijiaxiaowei 晓伟晓伟 2016-03-23 14:29

    finally中放置一定要执行的语句,通常用于流的关闭,资源的释放。我觉得写入文件的时候就可以用到此方法,不管文本是否存在,其实都会生成新的(或覆盖原有的)文本,但是最终流都是要关闭的。

    点赞 评论 复制链接分享

相关推荐