1.Throwable类
Error 错误
Exception 编译时异常(编译时出现的问题,要求必须显示处理)
RuntimeException 运行时异常(运行时出现的问题,可以不处理,由JVM处理)
Throwable的3个异常处理方法:
String getMessage() 返回此 throwable 的简短描述。获取的就是异常信息(原因)
String toString() 返回此 throwable 的详细消息字符串。获取的是异常类名和异常信息(原因)
void printStackTrace() JVM打印异常对象,默认此方法,打印的异常信息是最全面的
获取的是异常类名和异常信息(原因),异常的位置
2.异常处理方法
1)throw
抛出指定的异常对象
注意:
a.throw必须放在方法内部
b.throw抛出的对象必须是Exception或者是Exception子类
throw和throws的区别:
throw:动作
必须定义在方法内部;只能抛出一个异常
throws:声明
必须写在方法的声明出;可以声明多个异常
2)try....catch....finally
try{
//可能会出现异常的代码
}catch(异常的类型 变量名){
//处理异常的代码
}finally{
//无论是否会出现异常都会执行的代码,一般用来释放资源
}
注:如果finally中没有return语句,则先保存try或者catch中return的值,等finally中语句执行完后,返回之前保存的值;如果finally中有return语句,则返回finally中return的值。(一般我们不在finally中写return语句)
3.自定义异常
自定义异常类://要见明知意
java提供的异常类,不够我们使用,需要自己定义一些异常类
要一个编译时期异常 继承 Exception ,一定要处理(throws , try..catch)
还是一个运行时期异常 继承 RuntimeException(可以处理也可以不用处理)
格式:
public class XXXExcepiton extends Exception | RuntimeException{
添加一个空参数的构造方法//根据父类的构造方法生成的
添加一个带异常信息的构造方法//根据父类的构造方法生成的
}
注意:
1.自定义异常类一般都是以Exception结尾,说明该类是一个异常类
2.自定义异常类,必须的继承Exception或者RuntimeException
继承Exception:那么自定义的异常类就是一个编译期异常,如果方法内部抛出了编译期异常,就必须处理这个异常,要么throws,要么try...catch
继承RuntimeException:那么自定义的异常类就是一个运行期异常,无需处理,交给虚拟机处理(中断处理)