try-catch-finally语句中,如果try语句块中有return语句,那么在没有异常的情况下,在虚拟机执行到try的return之前,会先跳到finally中执行其中的代码。只有这样,才符合finally的定义:一定会执行的代码。
然后再回到try中,执行return语句。
本例中因为finally中是一个return语句,直接就返回了5,try中的return没有执行。
如果把你的代码改成这样你会更理解的:- public class T
-
- {
-
- public static void main(String args[])
-
- {
-
- T t = new T();
-
- int b = t.get();
-
- System.out.println(b);
-
- }
-
-
-
- public int get()
-
- {
-
- try
-
- {
- System.out.println("try语句块");
- return 4 ;
-
- }
-
- finally
-
- {
- System.out.println("finally语句块");
- //return 5 ;
-
- }
-
- }
-
- }
-
复制代码 运行结果:
try语句块
finally语句块
4
|