A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© viliv715 中级黑马   /  2014-8-25 09:17  /  1060 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 viliv715 于 2014-8-26 18:01 编辑
  1. /*
  2. 一、异常
  3.     异常:就是程序在运行时候出现不正常的情况
  4.     异常由来:问题也是现实生活中的一个具体事物,也可以通过java对类的形式进行描述,并封装成对象
  5.             其实就是java对不正常情况进行描述后的对象体现。
  6.     异常划分:Error和Exception
  7.         error:对于error一般不编写针对性的代码进行处理
  8.         exception:对于Exception可以使用针对性的方式进行处理。
  9. 二、异常的处理
  10.     try{需要被检测的代码}
  11.     catch(异常类 变量){处理异常的代码,处理方式}  
  12.     finally{一定会执行的语句}//final中通常用来关闭资源,只有一种情况不会执行,当执行到System.exit(0)时。
  13. 三、对捕获到的异常对象进行常见的方法操作
  14.     string getMessage():获取异常信息
  15.     string toString():获取异常名称以及异常信息
  16.     void printStackTrace():获取异常名称,异常信息和异常出现的位置。JVM默认的异常处理机制。
  17. 四、声明异常:提高安全性
  18.     throws Exception:若调用者未处理,编译不通过。
  19. 五、多异常处理
  20.     a声明异常时,建议声明为更具体的异常,这样处理可以更具体。
  21.     b对方声明几个异常,就对应几个catch块,不要定义多余的catch块。
  22.     如果多个catch块的异常出现继承关系,父类异常catch块放到最下面。
  23.     c建议在进行catch处理的时候,catch中一定要有具体的处理方式,不要简单的书写一条输出语句。最好记录到异常日志文件中。
  24. 六、自定义异常:继承Exception
  25.     因为项目中会出现特有的问题,而这些问题没有被java封装过对象,对这些问题,我们可以按照java的
  26.     方式对问题进行封装。
  27.     当在函数内部出现了throw抛出异常时,可以通过内部的try catch处理或者在函数上声明异常让调用者处理。
  28.     如下例所示
  29. */  
  30. class ZiDingYi extends Exception  
  31. {  
  32.   
  33. }  
  34.   
  35. class Demo  
  36. {  
  37.     int fun(int a,int b) throws ZiDingYi  
  38.     {  
  39.         if(b<0)  
  40.             throw new ZiDingYi();//手动通过throw关键字抛出一个自定义的异常对象  
  41.     }  
  42.     return a/b;  
  43. }  
  44. /*
  45. 七、自定义异常添加详细异常信息
  46.     以为父类已经把异常信息的操作都完成了,所以子类在构造时,将异常信息传递给父类的super语句,
  47.     就可以直接通过getMessage方法获取自定义异常信息。
  48. */  
  49. class ZiDingYi extends Exception  
  50. {  
  51.     ZiDingYi(String msg)  
  52.     {  
  53.         super(msg);  
  54.     }  
  55. }  
  56.   
  57. class Demo  
  58. {  
  59.     int fun(int a,int b) throws ZiDingYi  
  60.     {  
  61.         if(b<0)  
  62.             throw new ZiDingYi();//手动通过throw关键字抛出一个自定义的异常对象  
  63.     }  
  64.     return a/b;  
  65. }  
  66. /*
  67. 七、自定义异常继承Exception原因
  68.     异常体系有一个特点,因为异常类和异常对象都被抛出,他们都具备可平抛性,
  69.     这个可抛性是Throwable体系中独有的特点,只有这个体系中的类和对象才可
  70.     被throw和throws操作
  71. 八、throw和throws的区别
  72.     throws使用在函数上,后面跟异常类,多个用逗号隔开
  73.     throw使用在函数内,后面跟的是异常对象。
  74. 九、RuntimeException:Exception的特殊子类
  75.     a如果在函数内抛出该异常,函数上可以不用声明异常,编译通过。
  76.     b如果在函数上声明了异常,调用者可以不用进行处理,编译通过。
  77.     c之所以不用再函数上声明,是因为不需要让调用者处理,当该异常发生时,希望程序停止,因为在
  78.     运行时,出现了无法继续运算的情况,希望停止程序后对代码进行修正。
  79.     d自定义异常时,如果该异常发生无法继续进行运算,就让自定义异常继承RuntimeException
  80. 十、覆盖时异常的特点
  81.     a子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法只能抛出父类的异常或者该异常的子类。
  82.     b如果父类方法抛出多个异常,那么子类在覆盖方法时,只能抛出父类异常的子集。
  83.     c如果父类或者接口的方法中没有抛出异常,那么子类覆盖方法时也不能抛出异常。
  84.         如果子类方法有异常,就必须进行try处理,绝对不能抛。
  85. 十一、异常的好处
  86.     a将问题进行封装
  87.     b将正常流程代码和问题处理代码相分离方便阅读。
  88. 十二、异常处理原则
  89.     a处理方式有两种:try和throws
  90.     b调用到抛出异常的功能时,抛出几个就处理几个。
  91.     c多个catch。父类catch放到最下面
  92.     d catch内需要定义针对性的处理方式,不要简单的写上输出语句也,更不要不写。

  93. */
复制代码


5 个回复

倒序浏览
很详细,不错哦
回复 使用道具 举报
值得学习ing!
回复 使用道具 举报
收藏啦,谢谢分享
回复 使用道具 举报
楼主总结的不错啊
回复 使用道具 举报
总结的蛮好的,很有心
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马