首页 > 编程语言 > 详细

java try_catch_finally的执行流程

时间:2019-05-05 23:17:41      阅读:178      评论:0      收藏:0      [点我收藏+]

说说之间对 try catch finally的理解吧。

try 负责执行程序员认为可能有异常的代码块, 那怎么知道程序块里有哪些异常呢?  用catch捕捉,打印。但是一个程序发生异常还得有一些善后工作要做---一些连接要关闭,那就要finally来执行。(注意 catch可选,可多,finally可选,但是两者至少存在一个)

那么 三者的执行流程是怎么样的呢?

上代码

public static int trytest(){

int a=20;
try {

System.out.println("try返回");
return a+=80;
}
catch (Exception e){
System.out.println(e);
}
finally {
System.out.println("finally block");
if (a>50){
System.out.println("finally block a>50:"+a);
return a+1;
}
if (a>10){
System.out.println("finally block a>10:"+a);
return a+2;
}
}
return a+=110;
}

执行结果

try返回
finally block
finally block a>50:100
接到的返回是101

结果分析:  try语句块——finally语句块——try的return——finally的return。(没有trytest()的return)

若将finally语句块内第一个的return注释,  结果还是不变。那流程是try语句块——finally语句块——try的return。 结果如下

finally block
finally block a>50:100
finally block a>10:100
接到的返回是102

若在上例的基础上再将try的return注释。  返回的结果

try返回
finally block
finally block a>10:20
接到的返回是130

执行流程:try语句块——finally语句块——函数return。

若只将 try的return注释,结果是:

try返回
finally block
finally block a>10:20
接到的返回是20

  按照我的理解就是那就

技术分享图片

 

按照代码按行编译,先执行 try的return,再看有没有finally的return。没有就执行函数的return。

 

java try_catch_finally的执行流程

原文:https://www.cnblogs.com/smellpawn/p/10816724.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!