return是在finally执行后才返回的,且在finally无法改变返回值。所以你所返回的就是2了
看下面这个程序你就明白了- public class Test5{
-
- //主函数
- public static void main(String[] args) {
- //定义一个整型数组
- int [] arr={1,23,8,14,55};
- //调用showElement方法并传递一个大可以导致越界的参数
- int res=showElement(arr,arr.length);
- //显示得到的返回值
- System.out.println(res);
- }
-
- public static int showElement(int[] arr, int length) {
- int num=1;
- try {
- System.out.println(arr[length]);
-
- }
- catch (Exception e) {//这里应该抛数组角标越界,这里简单处理
- return num;//返回num
-
- }
- finally{
- num=2;
- System.out.println("finally执行了!");
-
- }
- return 3;
-
- }
-
- }
复制代码 |