异常
1、概述
异常就是Java在运行过程中出现的错误。
2、分类
其中Error指的是程序中的错误,是无法被程序处理的,也就是我们不需要理会的,比如内存溢出问题,但是Exception就是我们需要解决的问题了
- 运行时异常:
所有的RuntimeException类及其子类都是运行时异常。
例如:
这种异常一般都是代码书写不当导致,修改一下应该就没事了。
- 编译时异常
除了运行时异常以外的都是编译时异常,比如ParseException,这是Java程序必须显示处理的,否则程序就会出错,无法通过编译。
3、Jvm的处理
- 把异常名称,错误原因,出现位置等信息输出在控制台。
- 程序停止运行。
4、异常处理方案
1、获取异常 try…catch
(1)使用方式
注意:
一个try代码块至少要有一个catch或者finally,否则就会报错,但是catch可以用来处理异常,finally没有处理异常的能力。
finally代表不管异常是否发生,都会执行代码,除非写了System.exit,一般用来释放资源。
但是注意catch和finally没有try的情况不能使用。
2、抛出异常 throws
定义功能时,需要把出现的问题暴露出来让调用着去处理,就需要通过throws在方法标示出来。
例如:
public static void test() throws NullPointerException{}
3、throw
首先这并不是异常处理的方法,它是用来制造一个异常,一般根据需求去使用。
- throw new Exception: 制造一个编译时异常,且必须被处理。
- throw new RuntimeException:制造一个运行时异常
例如:
private static void test() throws Exception {
throw new Exception("Test!!!!");
}
4、throw和throws的区别
- throw用在方法体内,跟着异常对象名,但是throws用在方法声明后,跟的是异常类名。
- throw只能抛出一个异常对象名,throws可以跟多个异常类名,只要用,隔开
- throw表示抛出异常,有方法体内语句处理,throws表示抛出异常由方法调用者处理。
- 执行throw一定抛出了异常,但是throws表示一种可能性,不代表一定发生。
5、方法选择
如果后续程序需要继续运行,使用try…catch,但是后续程序不需要了就可以用throws。