Java 异常总结

来源:互联网 发布:linux 终端切换 编辑:程序博客网 时间:2024/06/11 04:01

一、什么是异常

1、异常是对问题的描述,将问题进行对象封装

二、异常体系
Throable
| –Error
| – Exception
|–RuntimeException

三、异常体系的特点

异常体系中的所有类及建立的对象都具备可抛性
也就是说可以被 throw 和 throws 关键字所操作
只有异常体系具备这个特点

三、throw 和 throws 的用法

throw 定义在函数内,用户抛出对象
throws 定义在函数上,用于抛出异常类,可以抛出多个逗号隔开

四、异常处理

当函数内容有抛出 异常对象,并未进行try处理,必须要在函数上声明,否则编译失败
注意: RuntimeException 除外。也就是说,函数内部如果抛出 RuntimeException 异常,函数上可以不同声明

如果函数声明了异常,调用者 需要进行处理。处理方法可以是 throws 或者 try

五、异常的分类

1、编译时被检测异常 :
该异常在编译时,如果没有处理(没有抛出也没有try),编译失败
该异常被标识,代表可以被处理

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

在编译时,不需要被处理,编译器不检查
该异常发生时,建议不处理,让程序停止。需要对代码进行修正

六、异常处理的语句
1、格式

try{// 需要被检测的代码}catch(){  // 处理异常的代码}finally{// 一定会执行的代码}

2、三种届结合方式

1> 第一种

try{}catch{}

2> 第二种

try{}finally{}

3> 第三种

try{}catch{}finally{}

注意:
1、 finally 中定义的通常是 关闭资源的代码,因为资源必须释放。
2、finally 只有一种情况不会被执行。当执行到System.exit(0);finally 不会执行。

七、自定义异常

1、定义类继承 Exception 或者RuntimeException,是为了让该自定义类具备可抛性,让该类具备操作异常的共性方法

2、当要定义异常类的信息十,可以使用父类已经定义好的功能,将异常 的异常信息传递给父类的构造函数

class myException exception {   myException (String message)  {     super(message);   }}

3、自定义异常类的好处 : 按照java的面向对象思恋,将程序中出现特有的问题进行封装。

八、异常的好处

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

九、异常的处理原则

1、处理方式有两种: try 或者 throws
2、 调用打抛出异常的功能时,抛出几个,就处理几个。也就是说,一个try对应多个catch
3、多个catch,父类的catch放到最下面(先子类后父类,详细的写在前面)
4、尽量去处理异常,切忌只是简单的调用printStackTrace()去打印输出
5、在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗落的异常
6、当捕获到的异常,本功能处理不了时,可以继续在catch 块继续抛出。

try{  throw new Aexception();}catch (Aexception e){   throw e;}

7、当捕获异常,如果该异常处理不了,但并不属于该功能出现的异常,可以将异常转换后,再抛出和该功能相关的异常。 或者异常可以处理,但需要将异常产生后和本功能相关的问题提供出去,让调用者知道并处理,也可以将捕获异常处理后转换新的异常抛出

try{   throw new AException();}catch(AException a){   // 对  throw new BException();}

十、注意事项

参照这里

原创粉丝点击