## **Java异常**
异常:是Java代码编译或者运行过程中出现的问题
异常的继承体系:
Throwable:可以抛出去异常
Exception:异常(普通问题)
编译时异常,编译 的时候出的问题.指的是RuntimeException 以及RuntimeException的子类
Error:错误
比如:OutOfMemoryError:超出内存错误
如果程序出现了错误,只能改代码
## **异常的基本操作**
创建异常对象(JDK已定义的异常会自动创建对象,自定义异常需要手动创建)
对于异常的基本操作:
a,抛出异常:JDK已定义的异常会抛出创建对象,自定义异常需要手动抛出
b,处理异常:捕获异常,使用try/catch做分支处理
异常处理指,处理的一种可能性,即有了异常处理的代码,不一定产生异常
如果没有异常,则代码正常执行,如果产生了异常,则中断当前执行代码,执行异常处理代码
### **异常处理注意事项:**
运行时异常可以不处理,不捕获也不声明
如果父类方法抛出多个异常,子类覆盖父类方法时,只能抛出相同 的异常或者他的子集
父类方法没有抛出异常,子类覆盖父类方法时也不可抛出异常,此时子类产生该异常只能捕获处理,不能声明抛出(多线程会用到)
当多异常处理时,捕获处理,前面的类不能是后面的类的父类
在try catch 后可以追加finally代码块,其中的代码一定会被执行,通常用于资源回收
### **区分异常类
哪些是编译时异常
Exception以及他的子类(runtimeException除外)
哪些是运行时异常\
RuntimeException以及他的子类
技巧,如何区分一个异常类
1.编译时异常,在编译时会报错,需要我们处理
2,运行时异常,只要定义一个方法,在方法中抛出一个异常,如果编译时报错,那么就是编译时异常,如果编译成功就是有哪些时异常,
### **常见运行时异常:**
1.runtimeException
2,ClsssCastException:类型转换异常(向下转型的时候)
3,ArrayIndexOutOfBoundException:数组下标越界
4,StringIndexOutOfBoundException:字符串下标越界
5,NullPointerException:空指针异常