代码允许过程中出现的非正常的情况。
1、运行时异常。
运行时才抛出错误,代码编译时无法识别。不需要强制捕获。
NullPointerException:空指针异常
IndexOutOfBoundsException:索引越界异常
ClassCastException:类转换异常
ArithmeticException:算术异常
2、编译时异常
编译时就会有提示。否则代码编译不通过,必须强制捕获或者throws声明。
InterruptedException:一个线程被另一个线程中断,抛出该异常。
IOException:IO异常
SQLException:SQL异常
ClassNotFoundException:找不到类异常
3、异常处理机制
通过try、catch、finally、throw、throws 5个关键字完成
try:尝试监听可能抛出的异常代码
catch:捕获try语句块中发生的异常
finally:最终总是被执行
throw:抛出异常
throws:方法后用来声明抛出的异常
3.1通过try...catch来捕捉异常并进行处理
try{
//可能出现异常的语句
}catch(XXException e){ //异常类 异常对象
//异常处理
}
3.2throw、throws关键字抛出
3.3 finnally:
可以在 try ...catch代码块后面加一个finally的代码块。无论是否发生异常,finally代码块中的代码总会被执行,一般用例收尾工作,如回收资源、数据库连接释放、问题那几io资源释放。
try{
...//代码
}catch(异常类型1 异常的变量名1){
...//代码
}catch(异常类型2 异常的变量名2){
...//代码
}finally{
...//finally代码块
}