异常机制
概述
异常时Java中一种识别及响应错误情况的一致性机制,有效的异常处理能使程序更加健壮,易于调试。
异常的原因有很多,比如:
1.用户输入了非法数据
2.要打开的文件不存在
3.网络通信时连接中断
4.JVM内存溢出
5.程序错误
6.物理错误 等等。
继承体系
Erroer
系统内部错误,这类错误由系统进行处理,程序本身无需捕获处理。
比如:OOM(内存溢出错误)、VirtualMachineError(虚拟机错误)、StackOverflowError(堆栈溢出错误)等,一般发生这种情况,JVM会选择终止程序。
Esception
概述
Exception是所有异常类的父类。分为非RuntimeException和RuntimeException
非RuntimeException异常
指程序编译时需要捕获或处理的异常,如IOException、自定义异常等。属于checked异常。
RuntimeException异常
指程序编译时不需要捕获或处理的异常,如:NullPointerException等。属于unchecked异常。一般是由程序员粗心导致的。如空指针异常、数组越界、类型转换异常等。
常用方法
1.Try...catch...
Throws
throws:抛出异常,并不会处理异常,如果最终没有出现try,依然会终止生命周期。它时一种提醒机制,告诉上家这里可能出现问题,并没有解决,需要注意
Finally
finally : 必须执行的语句块 , 除了 System.exit() 关闭JVM虚拟机之外,finally一定会执行.一般用于做一些关闭资源操作。且finally不能单独使用,需要和try...catch...一起使用
自定义异常类
语法
继承一个已有的异常类,如果运行时异常则继承RuntimeException即可,否则一般直接继承Exception
构造方法:一般需要一个无参构造,还需要一个有参构造用于传入错误信息