异常分类
1、Throwable所有异常或错误的根类
2、Eorro编译异常或会导致程序中断的错误
3、Exception: 所有异常类的根类
TuntimeException:运行时异常,在程序的运行期可能发生的异常
CheckedException:必须被处理的异常,在编译器会限时报错,只有try处理后才不会报错
常见异常
1、ArithmeticException:算数异常
2、ArrayIndexOutOfBoundsException:数组越界异常
3、IndexOutOfBoundsException:下标越界异常
4、NullPointerException:空指针异常
5、InputMismatchException输入不匹配异常
6、ClassCastException:类型转换异常
7、IOException:输入输出异常
8、SQLException:数据库异常
9、ClassNotFoundException:类型为找到异常
异常处理的三种情况
1、程序未发生异常,try快走完,不进入catch块,进入finally,同时继续向下运行
2、程序发生异常并捕获,try块走到发生异常的位置后,进入catch块,进入finally,同时继续向下运行
3、程序发生异常但未捕获,try块走到发生异常的位置后,进入finally,同时不会继续向下运行
结构
try-catch结构
try-finally结构
try-catch-finally结构
e.printStackTrace();打印出错堆栈的信息
catch块捕获时会同时新开堆栈继续运行
所以会发生打印堆栈信息和其他打印信息顺序不正常
e.getMessage();返回的是异常类型后的具体异常信息
有return的finally块的走势
无返回值的:catch中如果有return,会在finally块运行完在运行catch的return
有返回值的:catch中的return会正常运行,finally块运行完会回到catch的return处,但不会再次运行
如果finally块中也有return,则会覆盖