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

最近有同事遇到问题: 她在4处手动抛运行异常,5处存在return语句,结果程序在2出现异常时没有抛出运行异常,导致事务不一致. 我们都知道,当程序出现异常时候并且在不采取任何措施的情况下,是会抛出异常并停止方法的.在catch中手动 抛运行异常也是会结束程序的,这两种情况都会触发springAOP的事务回滚,但为什么会出现这种情况呢? 讨论研究了之后才明白,原因是当如果要抛运行异常时,程序就会立马结束,无法执行finally,而finally是必须要执行的 所以,程序设定catch中的异常是执…
上一篇介绍了如何给未检查异常快速增加try/catch语句,这里在补充一点其他相关操作.有时候我们增加了try/catch之后还需要在加一个finally块,比如android上每次分配一个cursor最好在代码末尾增加finally块,在其中关闭cursor防止内存泄露.android上cursor总共可占用内存的大小是2M,如果哪个应用的高频方法没有及时关闭cursor的话,会造成其它模块都无法分配cursor的严重后果.下面我们就介绍如何增加finally块的快捷操作. 步骤一:基于上一篇…
站在编译器的角度来看,java中的异常可以分为两种,已检查异常和未检查异常.对于已检查异常比如IO操作,编译器会要求设置try/catch语句块,在eclipse中也只要使用帮助快捷键ctrl+1,就可以自动生成try/catch代码.对于未检查的异常,编译器不会要求你添加保护块,IDE的帮助快捷键也没有作用.强大的eclipse还是为我们提供了自动生成try/catch的功能.        步骤一:选择需要增加try/catch保护的代码,注意要完整的一行,接着单击右键:         步…
今天遇到一个感觉很神奇的问题,记录一下问题以及自己分析问题的思路. 预警:不知道怎么看java字节码的朋友可能需要先看一下如何阅读java字节码才能看懂后面的解释. 我有一段程序: public class Test { public static void main(String[] args) { try { int a = 1 / 0; } catch (Exception e) { throw e; } } } 这个程序的运行结果相信大家都能猜到: 在main方法里捕获异常没有处理直接往…
1. Try块是什么? Try块是一块可能产生异常的代码块,一个Try块可能跟着Catch块或者Finally块,或者两者. Try块的语义: try{ //statements that may cause an exception } 2. Catch块是什么? 一个Catch块关联一个Try块,如果在Try块中有一个特定类型的异常发生,则响应的Catch块会执行,例如, 如果在Try块中arithmmetic exception发生,那么对应arithmmetic exception的Ca…
大家好,今天我们来讲一个笔试和面试偶尔都会问到的问题,并且在工作中不知道原理,也会造成滥用. 大家可能都知道,try 块用来捕获异常,catch块是处理try块捕获的异常,finally 块是用来关闭资源.一个try块后面可以跟多个catch块,如果后面一个catch块也不跟,就一定要跟一个finally 块. 结论1:当在try块遇到return语句时,finally语句块将在方法返回之前被执行,但是返回值不受finally块中重新赋值的影响. public class FinallyTest…
在解决已有代码的一个问题时,有一个try catch块,基本代码如下: try { //do something } catch { LogHelper.Debug(typeof(myHelper), string.Format("Could not find country code for IP Address {0}", ipAddress)); } 调试时,发现程序执行到try块时,发生错误,直接跳过去执行catch块了,而catch块里面只是调用LogHelper去记日志,还…
try..catch块的出现是为了异常处理. 格式为:try{...可能发生异常的代码...} catch{...对异常的处理...} finaly{...无论如何都会执行的代码..} 上面的只是一般的格式,同时还会存在以下格式. 1.一个try ,一个或多个catch. 2.一个try,一个或多个catch,一个finally 3.一个try,一个finally. finaly块中是不允许出现return语句的.出错,控制不能离开finally子句主体. 个人理解应给是catch块(在出现错误…
C#同级catch块和finally块中全都抛出异常,上一级优先捕获finally块中的异常. 测试代码: using System; namespace test { class Program { static void Main(string[] args) { try { try { throw new Exception(); } catch (Exception) { throw new Exception("catch块儿"); } finally { throw new…
一.多catch块的代码优化 在写代码时,多行存在不同的异常,使用try catch的话,习惯性的是有多个catch,如下所示: 注意到warning,文字描述如下: Reports identical catch sections in try blocks under JDK 7. A quickfix is available to collapse the sections into a multi-catch section. This inspection only reports…