经典指数          
原因
3221
浏览数
0
收藏数
 

如下代码的输出是 
package Test;
public class Test {
    private static void test(int[]arr) {
        for (int i = 0; i < arr.length; i++) {
            try {
                if (arr[i] % 2 == 0) {
                    throw new NullPointerException();
                } else {
                    System.out.print(i);
                }
            } finally {
                System.out.print("e");
            }
        }
    }

    public static void main(String[]args) {
        try {
            test(new int[] {0, 1, 2, 3, 4, 5});
        } catch (Exception e) {
            System.out.print("E");
        }
    }

}
可以得到的结论是( )
  • 编译出错
  • eE
  • Ee
  • eE1eE3eE5
  • Ee1Ee3Ee5

     举报   纠错  
 
切换
1 个答案

B try语句块,return NullPointerException(),也就是返回E 2.E 保存在一个临时区域里

3.执行finally语句块。若finally语句有返回值,则此返回值将替换掉临时区域的返回值 4.将临时区域的返回值送到上一级方法中。

finally其实是仅在return ; 语句执行前执行,如果return 一个函数,那么会先执行函数,但如果函数内有(return

;)语句,那么finally就会在这个(return ;)语句前执行。

 
切换
撰写答案