休息只会留下try/catch或周围的循环吗?

Han*_*etz 40 java

如果我有try ... catch一个内部的块while循环,并有#SA breakcatch,不执行程序退出循环?

如:

while (!finished) {
    try {
        doStuff();
    } catch (Exception e) {
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

doStuff()中抛出的异常会退出循环吗?

fmu*_*car 57

是的,它会的.最简单的方法是尝试一下.

public static void main(String[] args) {
        int i=0;
        while (i<10) {
            System.out.println(i);
            try {
                if(i ==7){
                    throw new Exception();
                }
                i++;
            } catch (Exception e) {
                break;
            }
        }
        System.out.println("out of loop");
    }
Run Code Online (Sandbox Code Playgroud)

它会打印出来

0
1
2
3
4
5
6
7
out of loop
Run Code Online (Sandbox Code Playgroud)

输出从0开始.

  • +1"最简单的方法就是试一试". (22认同)
  • 最简单的找出方法实际上是谷歌这个答案 (2认同)

Nat*_*yan 26

一个break语句总是适用于最内侧while,do或者switch,不管其他插入语句.但是,有一种情况break不会导致循环退出:

while (!finished) {
    try {
        doStuff();
    } catch (Exception e) {
        break;
    } finally {
        continue;
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,突然完成finally的原因是突然完成的try,并且突然完成了catch丢失.