public class Test{ public static int t<span style="font-family: Arial, Helvetica, sans-serif;">estFinally</span>(){ int i =0; try { i=i+2; System.out.println("try "+i); return i; } catch (Exception e) { // TODO: handle exception return 0; }finally{ System.out.println("finally "+i); return i; } } public static void main(String[] args){ System.out.println(testFinally()); } } try 2 finally 2 2 由于程序执行return语句就意味着结束当前函数的调用并跳出这个函数体,因此在任何语句要执行都只能在return前执行(除非碰到exit函数),因此finally块里的代码也是try、catch里的return语句前执行。此外try-finally和catch-finally中都有return,那么finally块中的return语句将会覆盖别处的return语句,最终返回到调用着那的是finally里return的值。