多catch块的代码优化】的更多相关文章

一.多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…
上一篇介绍了如何给未检查异常快速增加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…
对于关流操作的时候,最好采用如下语句块: InputStream in=......; try{ try{ //some statemenet }finally{ //close stream in.cloase(); } }catch(IOExpeactin e){ //show some error message } 这样可以让流关闭,还可以让流不能关闭还能抛出异常 还可以使用带资源的try 语句 try(Scanner in=new Scanner(new FileInoutStream…
代码: package test; public class FinallyTest { public static void main(String[] args) { try { // process try // return; // System.exit(0); } catch (Exception e) { // process catch } finally { // process finally } } } 如果try里面执行的是return,则finally块会执行 如果tr…
public static Connection getConnection(){ try { return datasource.getConnection(); } catch (SQLException e) { //这里得用运行时异常.不然就会报没有return的错误 System.out.println(e); throw new RuntimeException(e);//一定要加上这句,才能有用,暂时不知道为什么 } }…
最近有同事遇到问题: 她在4处手动抛运行异常,5处存在return语句,结果程序在2出现异常时没有抛出运行异常,导致事务不一致. 我们都知道,当程序出现异常时候并且在不采取任何措施的情况下,是会抛出异常并停止方法的.在catch中手动 抛运行异常也是会结束程序的,这两种情况都会触发springAOP的事务回滚,但为什么会出现这种情况呢? 讨论研究了之后才明白,原因是当如果要抛运行异常时,程序就会立马结束,无法执行finally,而finally是必须要执行的 所以,程序设定catch中的异常是执…
package com.wangzhu; import java.util.HashMap; import java.util.Map; /** * 在try.catch.finally块中,若try中有return语句,则返回try中变量的值,<br/> * 不管try块外是否对该变量进行了修改, 都不影响try中return的返回值.<br/> * 若finally中有return语句,则忽略try.catch块中的return语句.<br/> * 若finally…
1.try块在发生异常的地方中断程序的执行.2.如果有catch块,就检查该块是否匹配已抛出的异常类型.如果没有catch块,就执行finally块(如果没有catch块,就一定要有finally块)3.如果有catch块,但它与已发生的异常类型不匹配,就检查是否有其他catch块.4.如果有catch块匹配已发生的异常类型,就执行它包含的代码,再执行finally块(如果有).5.如果catch块都不匹配已发生的异常类型,就执行finally块(如果有).…
try-catch-finally语句主要是用来处理检查异常,捕获并处理,以及最后必须要执行的finally块. try-catch-finally语句入门: 1.try-catch-finally语句的一般语法形式为: try { // 可能会发生异常的程序代码 } catch (Type1 id1) { // 捕获并处理try抛出的异常类型Type1   } catch (Type2 id2) { // 捕获并处理try抛出的异常类型Type2  } finally { // 无论是否发生异…
try.catch.finally 块的关系 try块不能单独存在,后面必须跟catch块或者finally块. 三者之间的组合为:try-catch.try-catch-finally.try-finally 这几种组合是合法的. 一个try块可以有多个catch块,从上到下多个catch块的范围从小到大.…
在Java 7中,catch代码块得到了升级,用以在单个catch块中处理多个异常.如果你要捕获多个异常并且它们包含相似的代码,使用这一特性将会减少代码重复度.下面用一个例子来理解. Java 7之前的版本: 1 2 3 4 5 6 7 8 9 10 catch (IOException ex) {      logger.error(ex);      throw new MyException(ex.getMessage()); catch (SQLException ex) {      …
转自:https://www.jb51.net/article/72901.htm Java try和catch的使用 尽管由Java运行时系统提供的默认异常处理程序对于调试是很有用的,但通常你希望自己处理异常.这样做有两个好处.第一,它允许你修正错误.第二,它防止程序自动终止.大多数用户对于在程序终止运行和在无论何时错误发生都会打印堆栈轨迹感到很烦恼(至少可以这么说).幸运的是,这很容易避免. 为防止和处理一个运行时错误,只需要把你所要监控的代码放进一个try块就可以了.紧跟着try块的,包括…
前言 2016年3月修改,结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化.在修改之前,我的说法是这样的: 就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸鱼自然饱了. 代码优化一样,也许一个两个的优化,对于提升代码的运行效率意义不大,但是只要处处都能注意代码优化,总体来说对于提升代码的运行效率就很有用了. 这个观点,在现在看来,是要进行代码优化的一个原因,但不全对.在机械工艺发展的今天,服务器动辄8核.16核,64位CPU,代码执行效率非常高,Str…
以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的.例如下面的代码: 以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的.例如下面的代码: try { BYTE* pch ; pch = ( BYTE* )00001234 ;   //给予一个非法地址 *pch = 6 ; //对非法地址赋值,会造成Acces…
前言 2016年3月修改,结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化.在修改之前,我的说法是这样的: 就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸鱼自然饱了. 代码优化一样,也许一个两个的优化,对于提升代码的运行效率意义不大,但是只要处处都能注意代码优化,总体来说对于提升代码的运行效率就很有用了. 这个观点,在现在看来,是要进行代码优化的一个原因,但不全对.在机械工艺发展的今天,服务器动辄8核.16核,64位CPU,代码执行效率非常高,Str…
就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸鱼自然饱了. 代码优化一样,也许一个两个的优化,对于提升代码的运行效率意义不大,但是只要处处都能注意代码优化,总体来说对于提升代码的运行效率就很有用了. 这个观点,在现在看来,是要进行代码优化的一个原因,但不全对.在机械工艺发展的今天,服务器动辄8核.16核,64位CPU,代码执行效率非常高,StringBuilder替换StringBuffer.ArrayList替换Vector,对于代码运行效率的提升是微乎其微的…
关于Java代码优化的N条建议! 本文是作者:五月的仓颉 结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化.在修改之前,作者的说法是这样的: 就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸鱼自然饱了. 代码优化一样,也许一个两个的优化,对于提升代码的运行效率意义不大,但是只要处处都能注意代码优化,总体来说对于提升代码的运行效率就很有用了. 这个观点,在现在看来,是要进行代码优化的一个原因,但不全对.在机械工艺发展的今天,服务器动辄8核.16核,64位…
windhaunting,原文地址 以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的.例如下面的代码: try { BYTE* pch ; pch = ( BYTE* ) ; //给予一个非法地址 *pch = ; //对非法地址赋值,会造成Access Violation 异常 } catch(...) { AfxMessageBox( "catched" ) ; } 这段代码在debug…
以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的.例如下面的代码: 以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的.例如下面的代码: try { BYTE* pch ; pch = ( BYTE* )00001234 ;   //给予一个非法地址 *pch = 6 ; //对非法地址赋值,会造成Acces…
代码优化的目标是: 1.减小代码的体积 2.提高代码运行的效率 代码优化细节 1.尽量指定类.方法的final修饰符 带有final修饰符的类是不可派生的.在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的.为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写.如果指定了一个类为final,则该类所有的方法都是final的.Java编译器会寻找机会内联所有的final方法,内联对于提升Java…
写在前面 所谓异常处理,即让一个程序运行时遇到自己无法处理的错误时抛出一个异常,希望调用者可以发现处理问题. 异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制. 也许我们已经使用过异常,但是你习惯使用异常了吗? 现在很多软件都是n*365*24小时运行,软件的健壮性至关重要. 内容导读本文包括2个大的异常实现概念:C++的标准异常和SEH异常. C++标准异常: 也许你很高兴看到错误之后的Heap/Stack中对象被释放,可是如果没有呢? 又或者试想一下一个能解决的错误,…
引言 在翻看之前总结的常见面试题中,关于try...catch异常处理的还是蛮多了,今天看到这个面试题,也就重新学习一下. try..catch语法 try-catch语句由一个try块后跟一个或多个catch子句构成,这些子句制定不同的异常处理程序. 引发异常时,公共语言运行时(CLR)会查找处理此异常的catch语句.如果当前执行的方法不包含这样的catch块,则CLR会查看调用当前方法的方法,然后会遍历叠用堆栈.如果找不到catch块,则CLR会向用户显示一天有关未处理的异常的消息并停止执…