Java异常总结

xiaoxiao2021-02-28  124

一、什么是异常

异常主要是处理编译期不能捕获的错误,出现问题能继续顺利执行下去,而不导致程序终止,确保程序的健壮性。

处理过程 : 产生异常状态时,如果当前的contex不具备处理当前异常的能力,将在heap上new出来一个异常对象,停止当前的执行路线,把产生的异常对象抛给更高层的contex。

二、异常体系

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(); }

十、注意事项

参照这里

转载请注明原文地址: https://www.6miu.com/read-67095.html

最新回复(0)