Java 最后尝试阻止循环继续

Java 最后尝试阻止循环继续,java,try-finally,Java,Try Finally,我正在编写一个忽略异常的循环,它运行良好 for (; flag; ) { try { //do something ignore exception. Runnable r = queue.pollFirst(); r.run(); } catch (Exception ignored) { // ignored. } } 但我的问题

我正在编写一个忽略异常的循环,它运行良好

    for (; flag; ) {
        try {
            //do something ignore exception.
            Runnable r = queue.pollFirst();
            r.run();
        } catch (Exception ignored) {
            // ignored.
        }
    }
但我的问题是:如果我不捕获RuntimeException并强制继续finally块中循环,那么异常和返回值会发生什么变化

例如:

    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;
        }
    }
for(int i=0;i<10;i++){
试一试{
系统输出打印LN(i);
抛出新的RuntimeException();
}最后{
//如果继续循环,异常会发生什么情况?
继续;
}
}

它们将被
忽略
,因为
final
块有
final
字。

它们将被
忽略
,因为
final
块有
final
字。

不确定为什么要捕获运行时异常,因为在您尝试捕获它的时候,太晚了,因此您的continue将永远不会命中。

不确定您为什么要捕获RuntimeException,因为当您尝试捕获它时,已经太晚了,因此您的continue将永远不会命中。

运行时异常将被忽略,因为没有可访问/使用的捕获块(例如,用于日志记录目的)抛出java.lang.RuntimeException的对象。最后,该块不能访问try块抛出的异常对象。最好使用catch块来获取更多信息。

运行时异常将被忽略,因为没有catch块可访问/使用(例如,出于日志记录目的)java.lang.RuntimeException的抛出对象。最后,该块不能访问try块抛出的异常对象。最好使用catch块来获取更多信息。

continue会导致异常或返回值被丢弃。你可以很容易地测试它。@PeterLawrey:虽然我同意你的观点,这不是一个很好的问题,但仅仅尝试一些东西并不能保证观察到的行为就是所有发生的事情cases@PeterLawrey我知道例外情况会被忽略。它会引起一些问题吗?内存泄漏或堆栈溢出或其他情况。@Oebel是正确的,但您可以从假设开始,表明您自己已经尝试过,并询问这是否是有保证的行为+1@lymoge执行此操作时,GC仍能正常工作,并且堆栈不会变得更深。继续将导致丢弃异常或返回值。你可以很容易地测试它。@PeterLawrey:虽然我同意你的观点,这不是一个很好的问题,但仅仅尝试一些东西并不能保证观察到的行为就是所有发生的事情cases@PeterLawrey我知道例外情况会被忽略。它会引起一些问题吗?内存泄漏或堆栈溢出或其他情况。@Oebel是正确的,但您可以从假设开始,表明您自己已经尝试过,并询问这是否是有保证的行为+1@lymogeGC仍然可以正常工作,当您这样做时,堆栈不会变得更深。