Java基础(六)异常

来源:互联网 发布:ug攻丝编程 编辑:程序博客网 时间:2024/06/06 03:32

throws和throw的区别

throws在使用函数上,后面跟的是异常类,可以跟多个,用逗号隔开。
throw使用在函数内,后面跟的是异常对象。

异常的种类

1.编译时被检测异常

该异常在编译时,如果没有处理(没有抛也没有try),编译失败。该异常被标识,代表着可以被处理。

2.运行时异常(编译时不检测)

在编译时,不需要处理,编译器不检查。该异常的发生建议不处理,让程序停止,对代码进行修正。用到的是Exception的特殊子类异常RuntimeException,让自定义异常继承RuntimeException。

异常体系

Throwable    |--->Error    |--->Exception        |--->RuntimeException

异常体系特点:
1.异常体系中的所有类以及建立的对象都具备可抛性。(可以被throw和throws关键字操作)。

异常处理格式

try{    需要检验异常的代码:}catch(异常类 变量){    处理异常的代码(处理方式);}finally{    一定会执行的语句;}

需要注意:
1.再函数上声明异常,让调出进行处理,不处理编译失败。

System.out.println(e.toString());//异常名称:异常信息e.printStackTrace();//异常名称,异常信息,异常出现的位置。

2.在类方法上 throws Exception //在功能上通过throws关键字,声明了该类可能会出现问题。
3.建议声明较为具体的异常。
4.声明几个异常,就应该有几个catch块,如果catch块中的异常出现集成问题,父类异常catch块放在最先。

自定义异常

定义类继承Exception或者RuntimeException
1.为了让该自定义类具备可抛性。
2.让该类具备操作异常的共性方法。
3.按照java的面相对象思想,将程序中出现的特有问题进行封装。

class MyException extends Exception{    MyException(String message){        super(message);    }}

异常的好处

1.将问题进行封装。
2.将正常流程代码和问题处理代码分离,方便于阅读。

异常处理原则

1.try或throws
2.调用到抛出异常功能时,抛出几个就处理几个,一个try对应多个catch
3.catch内要定义针对性的处理方式,不要只简单定义printStackTrace。
4.如果父类或者借口没有异常抛出时,子类覆盖出现有异常,只能try不能抛。

体现

1.子类覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法只能抛出父类的异常或者该异常的子类。
2.如果父类抛出多个异常,那么子类覆盖该方法时,只能抛出父类异常的子集。
3.如果父类或者借口的方法中,没有异常抛出,那么在子类覆盖方法时,也不可以抛出异常。
4.如果子类方法发成了异常,就必须要进行try处理,决不能抛。

原创粉丝点击