异常的分类:
异常的产生和传递
异常的产生:
手动创建:new 异常名称(); //创建异常对象
产生异常:throw 异常对象:
相当于return语句,立刻返回异常对象:导致程序中止
异常传递:
按着方法的调用链方向反方向的传递,直至JVM,最终导致程序终止。
常见的未检查异常
1.ArrayIndexOutOfBoundEXception
(下标越界异常)
2.NullPointerException
(空指针异常)
3.ClassCastException
(强制类型转换异常)
4.NumberFormatException
(数字格式转换异常)
异常的处理方式:
消极处理:声明抛出
public static void mc(int i) throws 异常名称...{
}
积极处理:try-catch(捕获)
try{
//可能发生异常的代码
}catch(异常名称 e){
//异常发生时执行的代码块
//printStackTrace() 打印详细的错误信息
e.printStackTrace();
}
1.try后面可以跟多个catch代码块,try代码块中发生的异常和哪个catch后的异常相匹配,则执行哪个catch代码块
2.catch可以捕获父类异常,也可以捕获子类异常 但catch父类异常一定要放在catch子类异常之后
finally代码块
try{
}catch(异常名称 e){
}finally{
//一定会执行的代码
}
注意:finally中的return语句总是会被执行,所以在开发中一般不将return语句放于finally中
作用:通常定义资源关闭的代码
方法覆盖:
方法三要素完全相同(返回值,方法名,参数列表) 访问修饰符相同或更宽 不能跑出比父类中更多,更宽的异常
自定义异常
//继承与Exception 已检查异常
//继承与RuntimeException 未检查异常
class MyException extends RuntimeException{
public MyException(){}
public MyException(String message){
super(message);
}
}