测试代码如下:
1 package reviewTest; 2 3 /** 4 * @ClassName: ReturnTest 5 * @Description: 测试return在trycatch中的执行 6 * @author Kingram 7 * @date 2018年7月27日 8 * 9 */ 10 public class ReturnTest { 11 12 public static void main(String[] args) { 13 System.out.println(new ReturnTest().test()); 14 } 15 16 private int test() { 17 int x = 1; 18 try { 19 int[] arr = new int[2]; 20 x = arr[5]; 21 return x; 22 } catch (Exception e) { 23 x = 10; 24 return x; 25 } finally { 26 ++x; 27 return x; 28 } 29 } 30 31 }
程序执行分析:
当程序执行到第20行时会产生数组下标越界异常,这时直接跳到catch语句块,此时x==10,并没有return。
最终执行finally语句块此时x==11,并返回x,最终输出结果为11。