- public class TestEx {
- public static int test(int x){
- int i=1;
- try{
- System.out.println("try 块中 10/x之前");
- i = 10 /x;
- System.out.println("try 块中10/x之后");
- return i;
- }catch(Exception e){
- i =100;
- System.out.println("catch块......");
- }finally{
- i =1000;
- System.out.println("finally块");
- }
- return i;
- }
- public static void main(String avg[]){
- System.out.println(TestEx.test(1));
- System.out.println(TestEx.test(0));
- }
- }
复制代码 结果:
try 块中 10/x之前
try 块中10/x之后
finally块
10
try 块中 10/x之前
catch块......
finally块
1000
运行顺序:
TestEx.test(1)先执行try中的语句,返回i的值为10,没有异常执行finally中的语句,由于finally中没有return,所以返回值依然是10
TestEx.test(0)先执行try中的语句,由于i=10/x;发生异常跳转到catch中执行语句,然后执行finally中的语句最终i=1000,由于catch和finally中都没有返回语句return,所以最终i=1000
不知道我的运行顺序对不对,不对求解释??? |