try-finally阻止继续循环

时间:2016-05-03 15:03:26

标签: java try-finally

我正在编写一个忽略例外的循环,但效果很好。

    for (; flag; ) {
        try {
            //do something ignore exception.
            Runnable r = queue.pollFirst();
            r.run();
        } catch (Exception ignored) {
            // ignored.
        }
    }

但我的问题是:如果我没有捕获RuntimeException 并强制继续循环最终块,会发生什么异常和返回值?

示例:

    for (int i = 0; i < 10; i++) {
        try {
            System.out.println(i);

            throw new RuntimeException();
        } finally {
            //what will happen to the exception if continue loop?
            continue;
        }
    }

3 个答案:

答案 0 :(得分:2)

它们将是ignored,因为finally块具有final字。

答案 1 :(得分:1)

运行时异常将被忽略,因为没有catch块可以访问/使用(例如,用于记录目的)java.lang.RuntimeException的抛出对象。 finally块没有对try块抛出的Exception对象的任何访问权限。最好让catch块获取更多信息。

答案 2 :(得分:0)

不确定为什么要捕获RuntimeException,因为当你尝试捕获它时,为时已晚,因此你的继续将永远不会命中。