异常

概念

运行时抛出的程序错误
编译出错不属于此处的异常

基本语法

try{
存放所有可能出现异常的代码	
}catch(异常){
System.out.println("异常描述");
}finally{
//不是强制要求写
//不管是否有异常,都会执行finally部分
}

当不清楚异常的具体类型时,使用异常的共同父类 EXception
在这里插入图片描述

异常的返回值

在这里插入图片描述
一旦finally中有了返回值,try和catch的返回值就会失效,无论是否有异常产生,finally一定会执行,因此会覆盖掉try和catch的返回值。

关键字 throws和throw

throws

用在方法声明上,表示该方法可能会产生异常,但是不处理此异常,抛回给调用者处理。
在这里插入图片描述

throw

用在方法内部,人为产生异常对象并抛出
在这里插入图片描述

异常体系结构

在这里插入图片描述
异常体系结构分为:受查异常和非受查异常
上图中
蓝框及其子类,Error以及RuntimeException都属于非受查异常,不用使用try catch处理。
红框及其子类都属于受查异常,必须使用try catch 代码块处理异常,或者使用throws抛出异常

自定义异常类

程序开发中,需要定义一些和具体业务相关的异常进行处理。此时就需要继承已有异常类,定义新的异常。
若需要用户强制进行异常处理,则继承Exception类。
不需要强制用户进行异常处理时,继承RuntimeException类。
例如:
在这里插入图片描述