最近有同事遇到问题:

她在4处手动抛运行异常,5处存在return语句,结果程序在2出现异常时没有抛出运行异常,导致事务不一致.

我们都知道,当程序出现异常时候并且在不采取任何措施的情况下,是会抛出异常并停止方法的.在catch中手动

抛运行异常也是会结束程序的,这两种情况都会触发springAOP的事务回滚,但为什么会出现这种情况呢?

讨论研究了之后才明白,原因是当如果要抛运行异常时,程序就会立马结束,无法执行finally,而finally是必须要执行的

所以,程序设定catch中的异常是执行完finally后才执行,所以,finally中有return就不会返回去

执行抛异常的操作了,同理,当catch中有return halloWord("小名")的时候是会先执行halloWord("小名"),等执行完

finally后才将halloWord("小名")的结果返回,最后结束.

try catch块的秘密的更多相关文章

  1. Eclipse用法和技巧九:自动添加try/catch块2

    上一篇介绍了如何给未检查异常快速增加try/catch语句,这里在补充一点其他相关操作.有时候我们增加了try/catch之后还需要在加一个finally块,比如android上每次分配一个curso ...

  2. Eclipse用法和技巧八:自动添加try/catch块1

    站在编译器的角度来看,java中的异常可以分为两种,已检查异常和未检查异常.对于已检查异常比如IO操作,编译器会要求设置try/catch语句块,在eclipse中也只要使用帮助快捷键ctrl+1,就 ...

  3. 一个问题:关于finally中return吞掉catch块中抛出的异常

    今天遇到一个感觉很神奇的问题,记录一下问题以及自己分析问题的思路. 预警:不知道怎么看java字节码的朋友可能需要先看一下如何阅读java字节码才能看懂后面的解释. 我有一段程序: public cl ...

  4. 在java中的Try Catch块-------------异常处理(2)

    1. Try块是什么? Try块是一块可能产生异常的代码块,一个Try块可能跟着Catch块或者Finally块,或者两者. Try块的语义: try{ //statements that may c ...

  5. 我敢说你不一定完全理解try 块,catch块,finally 块中return的执行顺序

    大家好,今天我们来讲一个笔试和面试偶尔都会问到的问题,并且在工作中不知道原理,也会造成滥用. 大家可能都知道,try 块用来捕获异常,catch块是处理try块捕获的异常,finally 块是用来关闭 ...

  6. try catch 块中debug时发现错误细节的一次记录

    在解决已有代码的一个问题时,有一个try catch块,基本代码如下: try { //do something } catch { LogHelper.Debug(typeof(myHelper), ...

  7. C#try catch块

    try..catch块的出现是为了异常处理. 格式为:try{...可能发生异常的代码...} catch{...对异常的处理...} finaly{...无论如何都会执行的代码..} 上面的只是一般 ...

  8. C#同级catch块和finally块中全都抛出异常,上一级捕获哪一个?

    C#同级catch块和finally块中全都抛出异常,上一级优先捕获finally块中的异常. 测试代码: using System; namespace test { class Program { ...

  9. 多catch块的代码优化

    一.多catch块的代码优化 在写代码时,多行存在不同的异常,使用try catch的话,习惯性的是有多个catch,如下所示: 注意到warning,文字描述如下: Reports identica ...

随机推荐

  1. (二)Redis之Jedis概念和HelloWorld实现以及JedisPool的使用

    一.Jedis概念 实际开发中,我们需要用Redis的连接工具连接Redis然后操作Redis, 对于主流语言,Redis都提供了对应的客户端: 官网:https://redis.io/clients ...

  2. vue elment table根据返回值修改样式

    今天在写vue项目的时候,查询出的数据库的数据想根据条件修改显示.查询资料有一个 :formatter,可以实现这个效果,废话不多说,这个是我的例子: <el-table-column prop ...

  3. html5+css3 快速学习

    http://kuai.qietu.com/books/html5_preview/index.htm#slide1

  4. js写guess网页

    (一)布局           猜前                            ->                         猜后 (二)明确实现功能和具体实现: 1.网页生 ...

  5. MySQL: Can’t connect to MySQL server on (111 “Connection refused”)

    1. Mysql连接问题 远程访问mysql或者通过docker访问宿主机mysql经常会碰到下面的问题: Can't connect to MySQL server on (111 "Co ...

  6. 01 Windows编程——Hello World

    源码 #include "stdafx.h" #include<Windows.h> int WINAPI WinMain(HINSTANCE hInst,HINSTA ...

  7. [杭电oj][1005]Number Sequence

    sky同学在努力地刷题..,在这题卡住了,于是一起研究了一下... 这题本身挺简单的,(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) m ...

  8. How Many Answers Are Wrong(带权并查集)

    题目 带权并查集的博客~ 题目: 多组输入数据.n,m.你不知道[1,n]内任意区间内值的和. m次询问,a b 是端点,都在n的范围以内 : v表示 [a,b]的区间内值的和.对每次询问,判断v是否 ...

  9. 深度解析Graph Embedding

    Graph Embedding是推荐系统.计算广告领域最近非常流行的做法,是从word2vec等一路发展而来的Embedding技术的最新延伸:并且已经有很多大厂将Graph Embedding应用于 ...

  10. charles设置截图及常见问题汇总

    常见问题: 1.手机配置charles代理后,手机无法上网,无法访问chls.pro/ssl,解决办法:关闭电脑防火墙: 关闭后即可上网. 2.设置代理请求,charles看不到任何请求,解决办法:p ...