我在dao实现中遇到了一个java代码片段。它返回一个List,如下所示。
执行'return'语句后,finally块尝试关闭session。这会有效吗?会议还会开放吗?
感谢
标记
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();
}
}
答案 0 :(得分:5)
如果你终止你的程序,例如System.exit(0)或强制退出等,则唯一一次不执行finally块。所以答案是:是的,你的会话将被关闭。
答案 1 :(得分:3)
阅读The finally Block,是的,finally块将在return
之后执行。
答案 2 :(得分:2)
是的,finally
块将始终执行(*)。
finally
块将在return
之后执行,因为在执行finally
块之前将计算返回值并记住
(*)警告:除非有什么原因导致JVM完全结束操作。
答案 3 :(得分:0)
是的,finally块将在return
语句之后但在值完全返回到方法之前执行。