try,catch,finally的执行顺序

先贴出一段代码:大家猜猜结果是什么?

说明:finally是try-catch的最后必须要执行的,总体来说是顺序执行的。

package com.xaut.jianzhioffer;


public class JavaBasic {
private static String line = "";
public static void reString(int n){
try{
if(n!=1){
line+="1";
}
if(n==1){
throw new Exception();
}
}catch(Exception e){
line+="2";
}finally{
line+="3";
}
line+="4";
}
public static void main(String[] args) {
// TODO Auto-generated method stub
reString(0);
reString(1);
System.out.println(line);
}
}

代码解释:

main函数里面首先先调用reString(0),进入到函数体里面,n!=0,line = "1";没有异常被捕获到,然后运行到finally里面,line = "13",然后根据上下的顺序,执行到line = "134"

然后reString(0)执行完,按照main函数的顺序,执行到调用reString(1),进入到函数体里面。n==1;产生一个异常。然后进入到catch里面line="1342",之后到了finally,line=="13423",之后执行到try-catch里面。line=="134234"

注意:别忘了try语句里面的throw,抛出异常。第一次忘记写throw,结果是13434,跟预想的结果不一样,然后debug之后,发现在执行到new Exception之后出现了问题,结果就没有捕获到异常。就直接执行到finally,然后继续执行下去。

throw和throws的区别:

throw:用在语句当中,用于抛出异常

throws:用在方法之后,例如public void getString() throws Exception{}.

   表明方法中不能处理的异常,每个方法都必须要指定哪些异常不能处理,所以方法的调用者才能确保处理可能发生的异常

   多个异常是逗号分隔的。




-----------------------------------------------------------------------------------------------------------------------------------------------------------

结果是:134234

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值