标签: finally

最后一句不总是叫?

如果以下代码是从IDE或命令行运行,然后停止:

  • 从eclipse停止执行(红色按钮)
  • 按CTRL + C(命令行)
  • 当然(通过for循环替换while(true)循环

从不执行finally子句("最后"从未打印出来).

public class Test {
    public static void main(String[] args) {
        try {
            while (true) {
                Thread.sleep(1000);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        } finally {
            System.out.println("Finally");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

引用Java 7规范:

如果try块的执行正常完成,则执行finally块,然后有一个选择:

任何见解?

编辑

哎呀,我的坏,有限的for循环导致finally子句被调用.我没有注意到我的单元测试中的痕迹.所以他们现在不是问题.

java finally

-1
推荐指数
1
解决办法
450
查看次数

这最终会阻止执行吗?

可能重复:
在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();
    }
}
Run Code Online (Sandbox Code Playgroud)

java finally

-2
推荐指数
1
解决办法
391
查看次数

在finally块中为null赋值null

以下代码的输出是"Test Passed"; 谁能解释一下为什么?

public class Test {
    public static void main(String args[]) {
        System.out.println(new Test().print());
    }

    protected StringBuilder print() {
        StringBuilder builder = new StringBuilder();
        try {
            builder.append("Test ");
            return builder.append("Passed!!!");
        } finally {
        builder = null; 
    }
}
Run Code Online (Sandbox Code Playgroud)

java stringbuilder exception finally try-catch

-2
推荐指数
1
解决办法
487
查看次数

为什么不能从finally块的内部跳到外部?

为什么一个跳跃(breakcontinuegotoreturn)不能从内部做出一个外部finally块(经由除外throw)?我想知道原因。谁能解释技术原因?

c# finally

-2
推荐指数
1
解决办法
199
查看次数

最终使用是一种好习惯吗

我们在代码中使用try catch块。我想问的是,使用finally块是一种好习惯。我还没看到多少最终会阻塞代码。这是不好的做法吗?

java exception finally try-catch try-catch-finally

-3
推荐指数
1
解决办法
812
查看次数