本帖最后由 viliv715 于 2014-8-26 18:01 编辑
- /*
- 一、异常
- 异常:就是程序在运行时候出现不正常的情况
- 异常由来:问题也是现实生活中的一个具体事物,也可以通过java对类的形式进行描述,并封装成对象
- 其实就是java对不正常情况进行描述后的对象体现。
- 异常划分:Error和Exception
- error:对于error一般不编写针对性的代码进行处理
- exception:对于Exception可以使用针对性的方式进行处理。
- 二、异常的处理
- try{需要被检测的代码}
- catch(异常类 变量){处理异常的代码,处理方式}
- finally{一定会执行的语句}//final中通常用来关闭资源,只有一种情况不会执行,当执行到System.exit(0)时。
- 三、对捕获到的异常对象进行常见的方法操作
- string getMessage():获取异常信息
- string toString():获取异常名称以及异常信息
- void printStackTrace():获取异常名称,异常信息和异常出现的位置。JVM默认的异常处理机制。
- 四、声明异常:提高安全性
- throws Exception:若调用者未处理,编译不通过。
- 五、多异常处理
- a声明异常时,建议声明为更具体的异常,这样处理可以更具体。
- b对方声明几个异常,就对应几个catch块,不要定义多余的catch块。
- 如果多个catch块的异常出现继承关系,父类异常catch块放到最下面。
- c建议在进行catch处理的时候,catch中一定要有具体的处理方式,不要简单的书写一条输出语句。最好记录到异常日志文件中。
- 六、自定义异常:继承Exception
- 因为项目中会出现特有的问题,而这些问题没有被java封装过对象,对这些问题,我们可以按照java的
- 方式对问题进行封装。
- 当在函数内部出现了throw抛出异常时,可以通过内部的try catch处理或者在函数上声明异常让调用者处理。
- 如下例所示
- */
- class ZiDingYi extends Exception
- {
-
- }
-
- class Demo
- {
- int fun(int a,int b) throws ZiDingYi
- {
- if(b<0)
- throw new ZiDingYi();//手动通过throw关键字抛出一个自定义的异常对象
- }
- return a/b;
- }
- /*
- 七、自定义异常添加详细异常信息
- 以为父类已经把异常信息的操作都完成了,所以子类在构造时,将异常信息传递给父类的super语句,
- 就可以直接通过getMessage方法获取自定义异常信息。
- */
- class ZiDingYi extends Exception
- {
- ZiDingYi(String msg)
- {
- super(msg);
- }
- }
-
- class Demo
- {
- int fun(int a,int b) throws ZiDingYi
- {
- if(b<0)
- throw new ZiDingYi();//手动通过throw关键字抛出一个自定义的异常对象
- }
- return a/b;
- }
- /*
- 七、自定义异常继承Exception原因
- 异常体系有一个特点,因为异常类和异常对象都被抛出,他们都具备可平抛性,
- 这个可抛性是Throwable体系中独有的特点,只有这个体系中的类和对象才可
- 被throw和throws操作
- 八、throw和throws的区别
- throws使用在函数上,后面跟异常类,多个用逗号隔开
- throw使用在函数内,后面跟的是异常对象。
- 九、RuntimeException:Exception的特殊子类
- a如果在函数内抛出该异常,函数上可以不用声明异常,编译通过。
- b如果在函数上声明了异常,调用者可以不用进行处理,编译通过。
- c之所以不用再函数上声明,是因为不需要让调用者处理,当该异常发生时,希望程序停止,因为在
- 运行时,出现了无法继续运算的情况,希望停止程序后对代码进行修正。
- d自定义异常时,如果该异常发生无法继续进行运算,就让自定义异常继承RuntimeException
- 十、覆盖时异常的特点
- a子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法只能抛出父类的异常或者该异常的子类。
- b如果父类方法抛出多个异常,那么子类在覆盖方法时,只能抛出父类异常的子集。
- c如果父类或者接口的方法中没有抛出异常,那么子类覆盖方法时也不能抛出异常。
- 如果子类方法有异常,就必须进行try处理,绝对不能抛。
- 十一、异常的好处
- a将问题进行封装
- b将正常流程代码和问题处理代码相分离方便阅读。
- 十二、异常处理原则
- a处理方式有两种:try和throws
- b调用到抛出异常的功能时,抛出几个就处理几个。
- c多个catch。父类catch放到最下面
- d catch内需要定义针对性的处理方式,不要简单的写上输出语句也,更不要不写。
-
- */
复制代码
|
|