11.异常
Throwable:
|--Error 我们不处理,这种问题一般都是很严重的,比如说内存溢出。(非受检)
|--Exception(受检)
|--运行期异常,我们需要修正代码
1.NullPointerException
2.ArithmeticException
3.ClassCastException
4.ArrayIndexOutOfBoundsException
5.StringIndexOutOfBoundsException 等
|--编译期异常,必须处理的,否则程序编译不通过
1.FileNotFoundException
2.ClassNotFoundException
3.SQLException
4.NoSuchFieldException
5.NoSuchMethodException
6.ParseException 等
异常的处理方式(抓抛模型):
①:try-catch-finally
②:throws+异常类型
注意的点:
①:catch多个的时候:
例如:try{
}catch(){
}catch(){
}catch(){
}
括号中的异常从上到下应该是,异常大小从小到大!
②:try-catch-finally是解决编译时异常,使其能够正常完成编译(其实是将可能出现的异常延迟到运行时)
③:A方法throws的异常类型,B方法中调用A方法时,B方法throws的异常要大于A方法throws的异常类型,同样,继承重写方法也是这样,子类throws异常只能小于父类throws的异常,如果调用者,或者父类没有使用throws的话,那么被调用者,子类都不能使用throws,如果C方法调用B方法,B方法调用A方法,其中A,B,C三个方法都没有指定异常处理方式,那么建议A,B方法使用throws,C方法使用try-catch-finally进行处理,继承也是类似。(如果一直向上级抛,最后到JVM会做处理)