先来看牛客上的一道题
public class TestDemo { public static String output =""; public static void foo(int i){ try{ if(i == 1){ throw new Exception(); } }catch(Exception e){ output += "2"; return ; }finally{ output += "3"; } output += "4"; } public static void main(String[] args) { foo(0); foo(1); System.out.println(output); } }
当执行foo(0)时,首先进入try块,不满足,继而进入finally,最后执行try-catch-finally外部的代码,以是output变为“34”,
然后是foo(1),进入try块,try中抛出异常,有匹配的catch语句,则catch语句捕捉,然后,由于catch中有return语句,则return要在finally执行后再执行;try-catch-finally之外的代码就不再执行了(由于有return打断),以是最终output的值为“3423”
若是这个例子中的catch语句没有return,那么输出的效果就应该是“34234”.
今后例可以看出亮点:
1、try中没有抛出异常,则catch语句不执行,若是有finally语句,则接着执行finally语句,继而接着执行finally之后的语句;
2.不管是否try...catch,finally都市被执行。当try...catch中有return的话,finally后会执行try...catch中的return,然后不再执行后续语句。也就是说finally字句中的语句总会执行,纵然有return语句,也是在return之前执行。
3、另有一点:finally前有return、finally块中也有return,先执行前面的return,保留下来,再执行finally的return,笼罩之前的效果,并返回。
再一个例子
public class Test { public static int aMethod(int i)throws Exception { try{ return i / 10; } catch (Exception ex) { throw new Exception("exception in a Method"); } finally{ System.out.printf("finally"); } } public static void main(String [] args) { try { aMethod(0); } catch (Exception ex) { System.out.printf("exception in main"); } System.out.printf("finished"); } }
此题输出效果为 finally finished
若是将aMethod中的i/10换成10/i,则输出效果为 finally exception in main finished
1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入
深圳伴游预约女学妹今年密秘怎么样,深圳的网络剧大牌明星下边讲下。深圳伴游预约女学妹由深圳模特女学妹QQ群为老板搜集 深圳伴游预约女学妹在夜店的情况下,听见有大家讨论起了高档伴游详细地址,针对高档伴游详...
微信作为我们日常中使用最频繁的软件之一,我们在平时一定...
如今愈来愈多的人喜爱手机微信这一个服务平台,可是手机微信这一服务平台也并不是说一直会给大伙儿感恩回馈,有的情况下便是由于你一不小心惹到他自己的号就被禁掉了。那麼怎么会出現这类情况呢?实际上最重要的...
一、怎么微信定位软件下载怎么找黑客 1、网赌平台封号能解封黑客洗劫和其他工作一样,你只能从一开始就开始实现目标并继续成长。怎么微信定位软件下载中国免费但是到了今天,黑客这个词已经被用来指那些专门用电脑...
本文导读目录: 1、哪国黑客的最强? 2、世界黑客排名是怎样的? 3、中国黑客水平怎么样 4、哪个国家黑客水平最高呀? 5、伊朗有什么无人机?为什么伊朗无人机技术比俄罗斯好? 6、...
光大银行泄漏水池信息内容:私人信息由谁来维护,以前造成的数据信息泄露事务管理,通常与金融机构“里边人员”有关。从案例经济管理的视...