关于try、catch、finally的执行顺序

访客3年前关于黑客接单387

先来看牛客上的一道题

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米代金券、领会最新阿里云产物的种种优惠流动点击进入

相关文章

找黑客删除案底-防黑客软件手机版(怎样使用黑客软件控制别人的手机)

找黑客删除案底-防黑客软件手机版(怎样使用黑客软件控制别人的手机)

找黑客删除案底相关问题 黑客零基础自学入门相关问题 古代黑客是什么意思 黑客大户追款团队联系方式(黑客大户) 黑...

茶星座奶茶这个项目怎么样?当然是值得加盟的好品牌

茶星座奶茶这个项目怎么样?当然是值得加盟的好品牌

跟着近些年经济程度的提高,是条件获得了极大的改进,饮品行业的成长也长短常迅速的,茶星座奶茶加盟品牌作为饮品行业数一数二的加盟品牌,备受公共消费者的喜爱追捧备受宽大加盟商的存眷。那么茶星座奶茶加盟品牌成...

解密蜘蛛池的工作原理(附:免费程序和蜘蛛池

解密蜘蛛池的工作原理(附:免费程序和蜘蛛池

很多人认为外链对SEO没效果了,还有很多人看到发布外链越来越难了,没有论坛、平台不允许留锚文本,那么蜘蛛池程序可以完美的替你解决网站外链SEO的问题,蜘蛛池是怎么解决的呢?如何去解决的呢? 蜘蛛...

怎么买股票(新手入门买股票的步骤)

针对准备进到股市的人来讲,必须学习培训一些炒股票的专业知识,如今大家炒股票许多全是利用计算机了,那样在手机app上就能立即买卖了,那麼初学者怎样新手入门买卖股票?下边我就为大伙儿详细介绍初学者买卖股票...

黑客的电脑程序图片(黑客编程图片)

黑客的电脑程序图片(黑客编程图片)

本文导读目录: 1、电脑黑客如何编写程序? 2、急急急!有厉害的黑客能入侵电脑把电脑给毁了吗?我不运行任何程序,图片! 3、黑客会看到“我的电脑”里的图片吗? 4、什么是黑客程序? 5...

网络黑客教你精准定位微信地址

科技的发展造成技术性不断交替,只是一个手机号就可以精准定位另一方的微信地址,听着都不可靠,可是这名小伙儿還是挑选了这类方式,因此被骗,因此 根据手机号...