-2

重複の可能性:
Java では、最終的に切り札を返しますか?

dao 実装で Java コード スニペットを見つけました。以下に示すようにリストを返します。

「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();
    }
}
4

4 に答える 4

5

最終ブロックが実行されないのは、System.exit(0) や強制終了などのプログラムを終了した場合のみです。したがって、答えは次のとおりです。はい、セッションは閉じられます。

于 2011-07-18T14:02:04.840 に答える
3

finally ブロックを読んでください。そうです、finally ブロックは の後に実行されますreturn

于 2011-07-18T14:02:45.337 に答える
2

はい、finallyブロックは常に実行されます (*)。

ブロックが実行される前に戻り値が計算され、記憶されるという意味で、ブロックfinallyは「後に」実行されます。returnfinally

(*) 注意: 何かが JVM の操作を完全に終了させない限り。

于 2011-07-18T14:03:09.397 に答える
0

はい、finallyブロックはreturnステートメントの後、値がメソッドに完全に返される前に実行されます。

于 2011-07-18T14:05:35.683 に答える