这将最终阻止执行?

可能重复:
在Java中,最终还是回归王牌?

我在dao实现中遇到了一个java代码片段。它返回一个List,如下所示。

执行'return'语句后,finally块会尝试关闭会话。这项工作会完成吗? 或者会议是否仍然开放?

谢谢

标记

import org.hibernate.SessionFactory;
import org.hibernate.Criteria;
...
public List<Item> findItems(String name) {
    SessionFactory factory = HibernateUtil.getSessionFactory();
    Session session = factory.openSession();
    try{
        Criteria cri = session.createCriteria(Item.class);
        return (List<Item>) cri.add(Restrictions.eq("name", name)).list();
    } finally {
        session.close();
    }
}

终止块不会被执行的唯一时间是如果你终止你的程序,如System.exit(0)或强制退出等。所以答案是:是的,你的会话将被关闭。


阅读finally块,是的,finally块将在return后执行。


是的, finally块总是会执行(*)。

finally块将在return之后执行,意思是在执行finally块之前计算并记住返回值。

(*)警告:除非导致JVM全部结束操作。

链接地址: http://www.djcxy.com/p/73709.html

上一篇: will this finally block execute?

下一篇: try/catch block return with finally clause in java