首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【漫画】finally到底是在return之前执行还是return之后执行

"); } } } 执行结果: 必需要执行的操作 比如说上面所示的代码,在try语句里面 i / 0 的话抛出来异常,这样的话程序就在i / 0这里由于抛出了异常,所以程序不会继续往下去执行...比如我一些数据的关闭操作啦等,必须要执行的操作一定要放到finally语句,确保执行。 在某些情况下,try语句压根就没有执行到,那么finally语句也一定就不会执行到了。...第一段代码中的finally块中,虽然执行了i += 10,但是由于没有return,所以局部变量表中的内容没有变化,所以i还是10; 第二段代码中的finally块中,由于最后return i语句的执行...return返回后,就代表着方法执行结束,相应的该方法的栈帧就出栈了。而这个时候也就意味着,return返回是最后执行的,所以finally语句是在retrun返回之前执行的!...null; } } finally是在retrun语句执行后,return返回之前执行的,也就是说finally必执行(当然是建立在try执行的基础上) finally中修改的基本类型没有return

67720
您找到你想要的搜索结果了吗?
是的
没有找到

post为什么会发送两次请求?

跨域POST,浏览器先发送一个OPTIONS预请求,目的是与服务器确认是否允许实际的跨域请求,确认后再发实际POST请求。...因此,在这种情况下,会看到两次请求,其中一次是预检请求,另一次是实际的请求。...跨域请求:当你的前端应用在一个域名下发起跨域请求(即请求目标不在同一个域名下)时,浏览器自动发送一个 OPTIONS 预请求来检查是否允许跨域请求。...手动设置的 OPTIONS 请求:有时,你可能手动发送 OPTIONS 请求来检查服务器的支持或执行其他特定操作。这通常是在开发或测试过程中使用的,以确保服务器的预期行为。...为什么post和put之类的请求会有两次请求没有突出来,为什么浏览器默认将POST,PUT定义为复杂请求的原因,我来补充下吧:浏览器限制跨域请求一般有两种方式:浏览器限制发起跨域请求跨域请求可以正常发起

49300

finally执行吗???

不知道大家有没有问过自己,finally方法会在什么时候不执行呢?那我们下面来看看finally到底会不会不执行。...1.finally的含义 finally的真正含义是指从try代码块出来才一定会执行相应的finally代码块。...虚拟机中,执行main方法的线程就是一个非守护线程,垃圾回收则是另一个守护线程,main执行完,程序就中止了,而不管垃圾回收线程是否中止。...而且,即使其进入了try代码块,finally代码块也不会被执行。 总结 finally代码块并非一定执行,在不进入try代码块或者程序被中止时就不会执行。...所以写代码一定不要想当然,可能你认为绝对不会执行的代码,有时候它还真会执行,什么时候我们都要带着批判思维(熟话说:带脑子)进行程序的开发。

1.9K20

try,finally中都有return时程序的执行顺序

讲解如下: 主程序在调用test方法的时候执行try代码块里的代码,并先return  i=1;但并不会直接把return的结果返回给主函数,而是在暂时储存在栈空间里; 口说无凭!...那就让神奇的debug看告诉我们事实,在MyEclipse中用debug进行调试会发现,程序执行try代码块里的i=1;此时紧接着马上return    i=1; 事实见下图。...然后再执行finally代码块中的 代码, int  j = 2;  return j ; 此时执行完finally代码块的return j ; 后 ,程序就结束了,并不会再去执行返回try代码块中在栈空间里存储的...这两个例子的结论就是: 1.如果try代码块里有return语句,而finally代码块里没有return语句,程序执行finally代码块里的代码然后再执行try代码块里的return语句; 2....如果try代码块和finally代码块里都有return语句,try代码块里的return语句优先finally代码块里的return语句执行,但不会把返回的结果返回给主函数, 而是会把finally

2.6K30

try,finally中都有return时程序的执行顺序

,finally代码块优先在try代码块里的return执行; 第二种情况是:try代码块和finally代码块中都有return语句 这也是我们需要重点讨论的地方; java代码如下: [java...讲解如下: 主程序在调用test方法的时候执行try代码块里的代码,并先return  i=1;但并不会直接把return的结果返回给主函数,而是在暂时储存在栈空间里; 口说无凭!...那就让神奇的debug看告诉我们事实,在MyEclipse中用debug进行调试会发现,程序执行try代码块里的i=1;此时紧接着马上return    i=1; 事实见下图。...i=1; 栈空间里的 i = 1 ;  随着程序的结束 也就自动消失了~ 这两个例子的结论就是: 1.如果try代码块里有return语句,而finally代码块里没有return语句,程序执行...finally代码块里的代码然后再执行try代码块里的return语句; 2.如果try代码块和finally代码块里都有return语句,try代码块里的return语句优先finally代码块里的

759150

踩坑-Tomcat(servlet)在启动(加载)是执行两次

不知道大家在使用Tomcat时,有没有遇到过运行或者启动项目时,页面被执行两次的问题。 可能发生过,但是你没有发现。 首先看一下问题是怎么样的。...我发现,这不是之间将i变成了2,而是add()方法被调用了两次! 可是代码里面明明只调用一次啊? 我去浏览器搜索相关案例,发现还真有几例,哈哈哈,浏览器万能。...经过一系列排查,发现是Tomcat针对你的项目运行了两次。 原因 为什么运行两次呢?...Tomcat的默认webapp目录下(tomcat在启动时肯定会加载1次),然后又在server.xml中做了配置,为了达到访问根就可以访问你的项目(这样Tomcat就又加载1次),结果,Tomcat就会加载两次...总的来说,就是Tomcat的sever.xml的配置做了一次无用功,导致运行了两次。 如何解决? 首先,我们有三种方法,我们一个个说。

1.2K10

为什么@Conditional失效?

条件依赖的Bean未被正确注入:在定义条件注解时,如果条件依赖某个 Bean 的存在或属性值,但这个 Bean 在运行时未被正确注入,那么条件判断可能失效。...条件依赖的class未被加载:在条件注解依赖的class,未被引入或者由于版本冲突未被正确加载,也导致条件注解失效。...如果将这样的条件注解应用在非对应的上下文环境中,条件判断也失效。...Configuration注解的普通配置类优先于自动装配类,BeanDefination注册顺序也是按照这个顺序,那么也就出现了,我们前边条件注解失效,导致@Bean对应的Bean没有注册进来,原因就是执行普通...@Configuration注解标注类以及内部@Bean的时候,执行条件注解逻辑,从容器中没有找到@ConditionalOnBean依赖类的BeanDefination定义,所以就出现目标类没有正常注入的问题

38920
领券